Linq:“或”相当于Where()

Linq中有没有一种方法可以用来构buildSQLstring,如“… where(a = 1)OR(a = 2)”?

你当然可以在Where子句中使用(扩展方法)。 如果您需要dynamic构build复杂查询,则可以使用PredicateBuilder 。

  var query = collection.Where( c => cA == 1 || cB == 2 ); 

或者使用PredicateBuilder

  var predicate = PredicateBuilder.False<Foo>(); predicate = predicate.Or( f => fA == 1 ); if (allowB) { predicate = predicate.Or( f => fB == 1 ); } var query = collection.Where( predicate ); 

您可以在单个where子句中使用标准的.NET布尔运算符:

 MyDataSource.Where(data => data.a == 'a' || data.a == 'b') 

您可以像使用正常的C#===> ||一样使用所有相同的运算符 for“或”&& for“和”等

 var something = from s in mycollection where s.something == 32 || s.somethingelse == 45 select s 

.Where()调用中使用标准的布尔“Or”运算符||

 var query = items.Where(item => (item == 1 || item == 2)); 

所有Where调用都是对任何你想要的布尔比较,所以你可以用尽可能多的条件逻辑来填充它。