3 messaggi dal 10 gennaio 2007
Buon pomeriggio Lista

sto implementando un Web Service e per le ricerche nel DB (Sql Server) utilizzo LinQ.

Fino ad ora tutto bene ma adesso ho un punto in cui dovrei fare la stessa query a scalare sui dei campi diversi.

Esempio:
query1 -> se va a bon fine esco altrimenti faccio la query2 che se va a buon fine esco... etc.

La query in questione è questa
var dbAzi = from tmpAzi in _DBFest.tbAziendes where campo == _Search select new { tmpAzi.IDAzienda };


dove:

DBFest è collegato a EntityFramework 6

campo è dove dovrei inserire il nome campo che varia

_Search e il valore da ricercare.

La mia domanda è si possono parametrizzare i nomi campo?
Se si come visto che non riesco a trovare informazioni nell'etere.
Ringraziandovi anticipatamente invio cordiali saluti

Perini Luca
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Luca,
puoi usare il pacchetto NuGet System.Linq.Dynamic per comporre dinamicamente le tue query.
Eccolo qua:
https://www.nuget.org/packages/System.Linq.Dynamic/

Come vedi in questo esempio, avrai a disposizione un extension method Where che accetta una stringa come criterio di filtro. E dato che si tratta di una stringa, la potrai comporre dinamicamente.
https://github.com/kahanu/System.Linq.Dynamic/wiki/Dynamic-Expressions#dynamic-expression-api

Attenzione! Ricordati sempre di sanitizzare l'input dell'utente. Non usarlo indiscriminatamente nel comporre la query LINQ.
Ad esempio, fai uno switch per verificare che il nome del campo che ti arriva dalla richiesta sia uno di quelli ammessi.
switch(nomeCampoFornitoConLaRichiesta) 
{
  case "Titolo":
  case "Descrizione":
  case "Dettagli":
   //Ok, sono campi ammessi, quindi li uso nella query LINQ
  break;
  default:
   //Altrimenti sollevo un'eccezione
   throw new Exception("L'utente ha fornito un campo non valido per la ricerca");
}


ciao,
Moreno

Enjoy learning and just keep making
3 messaggi dal 10 gennaio 2007
Grazie Moreno
domani la provo subito e ti so dire

Grazie ancora
93 messaggi dal 22 marzo 2012
Ciao Moreno
Scusa il ritardo ma ho provato la soluzione della libreria linq dynamic e funziona perfettamente
Grazie ancora

Luca

Perini Luca

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.