Non sempre si è in grado di scrivere le query LINQ prima di compilare un progetto. Come si può immaginare la possibilità di compilare query composte dinamicamente a runtime è indispensabile. Nel blog di Scott Guthrie è uscito un post che parlava di questo qualche tempo fa, e stamane grazie ad un amico che ne aveva bisogno m'è tornato alla mente. Ecco quindi il link:

Grazie alla libreria (DynamicLibrary.cs) inclusa nei progetti di esempio si possono scrivere cose come la seguente:

   1: Brand brand = (from b in db.Brands
   2:                where b.BrandId == 2
   3:                select b).Single();
   4:  
   5: IQueryable<Car> cars = db.Cars.Where("Brand=@0", brand);
   6:  
   7: foreach (Car car in cars)
   8:     Console.WriteLine(car.Model);

La libreria aggiunge una serie di Extension Methods aggiuntivi che consentono ad esempio di usare una stringa come parametro di una Where...

...Ma non solo... se volete saperne di più, .

Technorati Tag: ,

Commenti (3) -

# | Gian Maria | 16.02.2008 - 22.04

Tutta quella serie di post di Scott è molto interessante, io a suo tempo la avevo messa tutta in un bel filozzo word formattato Laughing

Alk.

# | Franco | 24.10.2008 - 21.55

E se io volessi creare una stringa dinamica a run time ? è possibile ?
come si fa con sql per intenderci ...
del tipo :

if(miatextbox.text != "")
strWhere = "MIOCAMPO = '" + miatextbox.text + "'";

ecc...

è possibile con linq creare al volo una stringa di ricerca?

# | Andrea Boschin | 24.10.2008 - 22.40

Nulla ti vieta di farlo, se non il buonsenso. L'uso della concatenazione è sconsigliabile perchè puoi aprire la strada all'injection di codice dannoso.
L'uso dei parametri (@0, @1) anche in questo caso è d'obbligo.
Ciao!

Aggiungi Commento