在另一个帖子中: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
这给出了名字为“Daniel”且未满 18 岁的人。我正在寻找加入这些的语法,以查找名字为“Daniel”或未满 18 岁的人。
注意:我正在使用 ADO.net 数据服务,因此我没有可用的 .Contains()。
编辑:Union Suggestion(Garry Shutler)正是我正在寻找的功能。我确实遇到了两个可能的问题:
- 如果我要执行第三个条件(联合似乎将 IEnumerable 作为其参数),它看起来会产生多个数据库命中 - 我希望在代码中构建多个 AND 和 OR 语句,然后执行一个请求。
- ADO.Net 数据服务不支持联合(非常令人失望)