2012-06-25 16 views
7

Mam następujący artykuł Scott Gu stworzyć dynamiczną LINQ http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspxC# Dynamiczne LINQ Zmienna Where

dał przykład:

Expression<Func<Customer, bool>> e1 = 
    DynamicExpression.ParseLambda<Customer, bool>("City = \"London\""); 
Expression<Func<Customer, bool>> e2 = 
    DynamicExpression.ParseLambda<Customer, bool>("Orders.Count >= 10"); 
IQueryable<Customer> query = 
    db.Customers.Where("@0(it) and @1(it)", e1, e2); 

to działa prawidłowo w moim przypadku. Jednak mam nieznaną liczbę klauzul where, która jest ustalana w czasie wykonywania.

Czy ktoś proszę mi powiedzieć jak utworzyć rodzajowe gdzie klauzuli, takie jak

Where("@0(it) and @1(it) and... @n(it)", e1, e2, ... en); 

Dzięki

+0

Jak o próbie z czymś db.Customers.Where (c => c.Order .Count> someVariable1 && c.Order.Count HatSoft

Odpowiedz

18

można dołączyć dodatkowe operatory na obiekcie query:

query = db.Customers.Where(...); 
query = query.Where(...); 
query = query.Where(...); 

ten sposób możesz dołączać klauzule dynamicznie i jesteś niezależny od ich liczby.

+0

Dzięki, że to co teraz robię. – gunnerz

+0

+1 To było takie proste. Wielkie dzięki, proszę pana. –

+0

jak wykonać klauzulę IN w miejscu? – Neo