LINQ是否支持可组合"或查询"?

Chr*_*Dog 3 linq where-clause wcf-data-services

在另一篇文章中: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
Run Code Online (Sandbox Code Playgroud)

这给人们起名为"丹尼尔"并且未满18岁.我正在寻找加入这些名称的语法,以找到名字为"丹尼尔"或未满18岁的人.

注意:我正在使用ADO.net数据服务,所以我没有.Contains()可供我使用.

编辑:联盟建议(由Garry Shutler)正是我正在寻找的功能方面.我确实遇到了两个可能的问题:

  1. 如果我要做第三个条件(联合似乎将IEnumerable作为其参数),它看起来会产生多个数据库命中 - 我希望在代码中构建多个AND和OR语句然后执行一个请求.
  2. ADO.Net数据服务不支持Union(非常令人失望)

Gar*_*ler 6

你想要的就像:

var people = from p in Person
             where p.age < 18 || p.firstName == "Daniel"
             select p;
Run Code Online (Sandbox Code Playgroud)

或者你刚才举了一个简单的例子?

在这种情况下,您可以使用:

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);
Run Code Online (Sandbox Code Playgroud)

LinqToSql可能足够智能,可以将其转换为OR,但我不太确定.