2011-05-25 71 views
0

您可以在針對您的數據庫的查詢中使用SelectMany,並且如果可以,該列需要使用哪種類型才能執行此操作?我在亂搞LINQPad,並且隨時嘗試使用SelectMany,我得到一個錯誤,並且從我正在閱讀的內容看,它聽起來像你的lambda表達式中的類型必須是一個集合。LINQ選擇許多問題

+0

你能提供你嘗試過的東西,相應的錯誤信息,以及你正在努力完成的事情。 – 2011-05-25 20:46:30

回答

1
Houses.SelectMany(h => h.HousesPersons.Select(hp => hp.Person.Name)) 

如果您有3個表格。房屋,房屋人員和人員。 房屋與使用HousesPersons存儲HouseId和PersonId的人有一對多關係。

此查詢會爲您列出所有房屋中所有人的列表,而不是按房子分組。

編輯:對不起,我無法讓AdventureWorks在我的機器上使用文本示例。

+0

很好的解釋。但爲了做到這一點,你是否總是需要多張桌子?有沒有辦法只是說Houses.SelectMany(一些lambda表達式)? – esastincy 2011-05-25 20:55:22

+0

爲什麼你需要,選擇不返回你需要的數據?除非Select()的結果返回IEnumerable > - 或其他結構化數據。您只需要使用SelectMany()來展平數據。 – DaveShaw 2011-05-25 20:59:02

0

SelectMany項目序列的每個元素(即,一個對象,它是一個枚舉或列表的屬性)轉換成IEnumerable<T>和並將結果序列的序列到單個序列/ IEnumerable<T>

說了它可以適用於Linq to Entities環境 - 您可以選擇選擇多個實體的導航屬性(相關實體),並將它們放在單個列表中。