2010-04-15 81 views
3

我想獲得Item對象的集合或列表,但我現在獲取數組數組。簡單的LinQ問題:將[] [] []轉換爲[]

Item[][] s = employees.Select(e => e.Orders.Select(o => new Item(e.ID, o.ID)).ToArray()).ToArray(); 

任何人都可以選擇我的解決方案嗎?

P.S.只是LinQ在解決:)

回答

5

您需要使用SelectMany來連接的結果集。

var items = employees.SelectMany(e => e.Orders.Select(o => new Item(e.ID, o.ID))); 
5

對於它的價值,這可以稍微更簡潔而清晰的LINQ語法編寫:

var s = from e in employees 
     from o in e.Orders 
     select new Item(e.ID, o.ID); 
+1

雖然我同意這種說法,而不是改變所使用的語法,我會認爲,'Orders'應有一個「員工」的參考,並且不需要「項目」。 – 2010-04-15 11:43:19

+0

+1。請注意,該語法實際上已轉換爲SelectMany。使用任何你發現更可讀的東西。生成的代碼完全相同。 – Niki 2010-04-15 14:57:16