我想獲得Item對象的集合或列表,但我現在獲取數組數組。簡單的LinQ問題:將[] [] []轉換爲[]
Item[][] s = employees.Select(e => e.Orders.Select(o => new Item(e.ID, o.ID)).ToArray()).ToArray();
任何人都可以選擇我的解決方案嗎?
P.S.只是LinQ在解決:)
我想獲得Item對象的集合或列表,但我現在獲取數組數組。簡單的LinQ問題:將[] [] []轉換爲[]
Item[][] s = employees.Select(e => e.Orders.Select(o => new Item(e.ID, o.ID)).ToArray()).ToArray();
任何人都可以選擇我的解決方案嗎?
P.S.只是LinQ在解決:)
您需要使用SelectMany
來連接的結果集。
var items = employees.SelectMany(e => e.Orders.Select(o => new Item(e.ID, o.ID)));
你正在尋找被稱爲「的SelectMany」擴展方法:http://msdn.microsoft.com/en-en/library/system.linq.enumerable.selectmany.aspx
看一看Enumerables.SelectMany()
,看到this Stack Overflow question的例子。
對於它的價值,這可以稍微更簡潔而清晰的LINQ語法編寫:
var s = from e in employees
from o in e.Orders
select new Item(e.ID, o.ID);
雖然我同意這種說法,而不是改變所使用的語法,我會認爲,'Orders'應有一個「員工」的參考,並且不需要「項目」。 – 2010-04-15 11:43:19
+1。請注意,該語法實際上已轉換爲SelectMany。使用任何你發現更可讀的東西。生成的代碼完全相同。 – Niki 2010-04-15 14:57:16