"或"等效于Linq Where()lambda表达式

dst*_*str 85 .net linq where-clause

在Linq中是否有一个方法可用于构建SQL字符串,如"... where(a = 1)OR(a = 2)"?

tva*_*son 177

您当然可以在Where子句(扩展方法)中执行此操作.但是,如果需要动态构建复杂查询,则可以使用PredicateBuilder.

 var query = collection.Where( c => c.A == 1 || c.B == 2 );
Run Code Online (Sandbox Code Playgroud)

或者使用PredicateBuilder

 var predicate = PredicateBuilder.False<Foo>();
 predicate = predicate.Or( f => f.A == 1 );
 if (allowB)
 {
    predicate = predicate.Or( f => f.B == 1 );
 }

 var query = collection.Where( predicate );
Run Code Online (Sandbox Code Playgroud)


Sim*_*ele 24

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

MyDataSource.Where(data => data.a == 'a' || data.a == 'b')
Run Code Online (Sandbox Code Playgroud)


Mua*_*Dib 18

您使用与普通C#===> ||中相同的运算符 用于"或"&&用于"和"等.

var something = from s in mycollection
                where s.something == 32 || 
                      s.somethingelse == 45 
                select s
Run Code Online (Sandbox Code Playgroud)