如果我想在查询中附加AND语句,我可以这样做:
query = query.Where(obj=>obj.Id == id);
if(name.HasValue)
query = query.Where(obj=>obj.Name == name);
Run Code Online (Sandbox Code Playgroud)
它会给我:
query.Where(obj=>obj.Id == id && obj.Name == name)
Run Code Online (Sandbox Code Playgroud)
如何附加将导致以下结果的OR语句:
query.Where(obj=>obj.Id == id || obj.Name == name)
Run Code Online (Sandbox Code Playgroud)
你不能本地做.但是,您可以在运行之前使用PredicateBuilder组合查询,并且它支持OR.
var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (obj=>obj.Id == id);
if(name.HasValue) predicate = predicate.Or (obj=>obj.Name == name);
return query.Where(predicate);
Run Code Online (Sandbox Code Playgroud)