如果你在Linq查询中添加"和"条件,那么很容易就这样做:
var q = MyTable;
if (condition1)
q = q.Where(t => t.Field1 == value1);
if (condition2)
q = q.Where(t => t.Field2 > t.Field3);
// etc.
Run Code Online (Sandbox Code Playgroud)
当你想添加"或"条件时,有没有聪明的方法做同样的事情?
您可以使用PredicateBuilder并使用它来构建Or基于表达式:
var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (t => t.Field1 == value1);
predicate = predicate.Or (t => t.Field2 > t.Field3);
q = q.Where (predicate);
Run Code Online (Sandbox Code Playgroud)
您可以在这里阅读更多相关信息:http: //www.albahari.com/nutshell/predicatebuilder.aspx
用您查询的对象替换Productin PredicateBuilder.False<Product>().
请注意,您可以False根据需要从谓词开始Or.如果你想要一个And谓词,Yuo应该从a开始True