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
一个解决scheme可能是dynamicLinq:
在.Where()
调用中使用标准的布尔“Or”运算符||
。
var query = items.Where(item => (item == 1 || item == 2));
所有Where调用都是对任何你想要的布尔比较,所以你可以用尽可能多的条件逻辑来填充它。