在另一個posting: Does Linq-To-Sql support composable queries中討論瞭如何動態地組合/連接where子句。這似乎是用「AND」(即第一個where子句和第二個where子句通過AND連接)完成的。我想知道的是,如果有一種方法可以用OR來組合Linq查詢。LINQ支持組合「OR查詢」嗎?
例子:
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歲。我在尋找的語法加入這些發現誰擁有的「第一人的名字Daniel「或者低於18.
注意:我使用的是ADO.net Data Services,因此我沒有.Contains()提供給我。
編輯:聯盟建議(Garry Shutler)正是我所需要的功能。我也遇到兩種可能的問題吧:
- 看起來它將使多個數據庫命中,如果我是做第三個條件(工會似乎需要一個IEnumerable作爲它的參數) - 我希望建立在代碼中添加多個AND和OR語句,然後執行一個請求。
var people = from p in Person where p.age < 18 || p.firstName == "Daniel" select p;
或者你只是給出一個簡單的例子:
- 聯盟不被ADO.Net數據服務(非常失望)
謂詞生成器似乎並不支持ADO.Net數據服務的查詢?在執行上述結果時:「錯誤將Linq表達式轉換爲URI:表達式((False或Invoke(m => m.FirstName =」Daniel「),[10007]))或Invoke(p =>(p.age < 18),[10007]))不被支持。「 – ChrisHDog 2008-12-15 23:23:00
實際上這意味着Linq不能支持ADO.NET數據服務或者表達式。 – 2008-12-16 01:18:13