首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Linq Where() lambda表达式中的"Or“等效项

Linq Where() lambda表达式中的"Or“等效项
EN

Stack Overflow用户
提问于 2010-01-20 21:16:27
回答 6查看 94.3K关注 0票数 94

Linq中有没有一种方法可以用来构建像"...where (a=1) OR (a=2)“这样的SQL字符串?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-20 21:19:18

你当然可以在Where子句(扩展方法)中做到这一点。但是,如果需要动态构建复杂查询,则可以使用PredicateBuilder

代码语言:javascript
复制
 var query = collection.Where( c => c.A == 1 || c.B == 2 );

或者使用PredicateBuilder

代码语言:javascript
复制
 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 );
票数 195
EN

Stack Overflow用户

发布于 2010-01-20 21:18:46

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

代码语言:javascript
复制
MyDataSource.Where(data => data.a == 'a' || data.a == 'b')
票数 26
EN

Stack Overflow用户

发布于 2010-01-20 21:19:17

您可以使用与常规C# ===> ||中相同的运算符表示"or“或”&&“表示"and”等。

代码语言:javascript
复制
var something = from s in mycollection
                where s.something == 32 || 
                      s.somethingelse == 45 
                select s
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2101540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档