LINQ lambda表达式追加OR语句

Jam*_*mes 4 c# linq c#-3.0

如果我想在查询中附加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)

Bob*_*son 6

你不能本地做.但是,您可以在运行之前使用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)