2012-06-25 28 views
7

tôi sau bài viết Scott Gu để tạo ra một LINQ động http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspxC# động LINQ Biến đâu khoản

Ngài đã ban cho một ví dụ:

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); 

này hoạt động tốt trong trường hợp của tôi. Tuy nhiên tôi chưa biết số mệnh đề, được quyết định khi chạy.

bất cứ ai có thể vui lòng cho tôi biết làm thế nào để tạo ra một generic đâu khoản, chẳng hạn như

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

Cảm ơn

+0

sao bạn không thử với một cái gì đó giống như db.Customers.Where (c => c.Order .Count> someVariable1 && c.Order.Count HatSoft

Trả lời

18

Bạn có thể đính kèm các nhà khai thác bổ sung về đối tượng query:

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

Bằng cách này bạn có thể đính kèm các mệnh đề động và bạn độc lập với số lượng của chúng.

+0

Cảm ơn Thats những gì tôi đang làm – gunnerz

+0

+1 Vì vậy, nó đơn giản. Cảm ơn ngài rất nhiều. –

+0

cách thực hiện mệnh đề IN ở đâu? – Neo

Các vấn đề liên quan