2010-08-06 92 views
1

鑑於這種類:恢復所有兒童家長[]

public class Parent 
{ 
    public Child[] Children {get;set;} 
} 

這陣:

Parent[] parents; 

我怎樣才能檢索到所有從父母陣列孩子使用LINQ或別的東西, ?這看起來很糟糕:

IList<Child> children = new List<Child>(); 
foreach(var parent in parents) 
    children.AddRange(parent.Children); 

或者是不是那麼糟糕? :-)

回答

9

試試這個:

parents.SelectMany(p => p.Children).ToArray() 
+0

賓果邦戈,的SelectMany是漢帝-dandiest之一linq的部分。 – 2010-08-06 19:26:47

+0

他想要一個列表。你需要有一個List.AddRange(parents.SelectMany ...) – 2010-08-06 19:29:08

+1

@Joel Etherton:或只是.ToList()而不是.ToArray():) – 2010-08-06 19:29:59

1

我不認爲你的問題提出解決方案是壞的。它非常易讀,易於理解正在發生的事情。除非你有什麼理由需要優化這個,否則我沒有看到任何問題。

如果你真的不想使用Linq,是另一回事(和完全有效我看來 - 使用LINQ更多的經驗/實踐越好)