在另一篇文章中:Linq-To-Sql是否支持可组合查询,讨论了如何动态组合/连接where子句.这似乎是用"AND"完成的(即第一个where子句和第二个where子句由AND连接).我想知道的是,是否有办法用OR组合Linq查询.
例:
var people = from p in Person where p.age < 18 select p var otherPeople = from p in people where p.firstName equals "Daniel" select p
这给人们起名为"丹尼尔"并且未满18岁.我正在寻找加入这些名称的语法,以找到名字为"丹尼尔"或未满18岁的人.
注意:我正在使用ADO.net数据服务,所以我没有.Contains()可供我使用.
编辑:联盟建议(由Garry Shutler)正是我正在寻找的功能方面.我确实遇到了两个可能的问题:
如果我要做第三个条件(联合似乎将IEnumerable作为其参数),它看起来会产生多个数据库命中 - 我希望在代码中构建多个AND和OR语句然后执行一个请求.
ADO.Net数据服务不支持Union(非常令人失望)
Garry Shutle.. 6
你想要的就像:
var people = from p in Person where p.age < 18 || p.firstName == "Daniel" select p;
或者你刚才举了一个简单的例子?
在这种情况下,您可以使用:
var under18 = from p in Person where p.age < 18 select p; var daniels = from p in Person where p.firstName == "Daniel" select p; var combined = under18.Union(daniels);
LinqToSql可能足够智能,可以将其转换为OR,但我不太确定.
你想要的就像:
var people = from p in Person where p.age < 18 || p.firstName == "Daniel" select p;
或者你刚才举了一个简单的例子?
在这种情况下,您可以使用:
var under18 = from p in Person where p.age < 18 select p; var daniels = from p in Person where p.firstName == "Daniel" select p; var combined = under18.Union(daniels);
LinqToSql可能足够智能,可以将其转换为OR,但我不太确定.