2012-06-25 84 views
7

我下面斯科特谷的文章,以创建一个动态的LINQ http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspxC#动态可变的LINQ Where子句

他给了一个例子:

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

这工作正常,在我的情况。但是,我有未知数的where子句,这是在运行时决定的。

谁能告诉我如何创建一个通用的Where子句,如

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

感谢

+0

怎么样的东西,如db.Customers.Where尝试(C => c.Order .Count> someVariable1 && c.Order.Count HatSoft

回答

18

您可以query对象上附加其他运营商:

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

这样你可以动态附加子句,并且你的计数是独立的。

+0

谢谢那就是我现在正在做的 – gunnerz

+0

+1这么简单。非常感谢先生。 –

+0

IN子句在哪里做? – Neo