2009-08-04 80 views
5

我有一個List對象,其中包含字符串數組作爲其屬性之一。我想獲得一個包含所有值的獨特字符串數組。LINQ - 從對象層次結構中選擇所有子項

我的目標是這樣的:

public class Zoo { 
    string Name { get; set;} 
    string[] Animals { get; set;} 
} 

一些動物園可能只有一個動物,有些人可能有很多。什麼是最簡單的Lambda表達式或LINQ查詢來獲得我在List<Zoo>的所有動物園中的所有動物的唯一列表?

回答

12
var query = zoos.SelectMany(zoo => zoo.Animals) 
       .Distinct(); 

或者,如果你是一個查詢表達式風扇(我不會的東西這個簡單):

var query = (from zoo in zoos 
      from animal in zoo.Animals 
      select animal).Distinct(); 
+0

感謝,喬恩。在我的部分錯別字。 – 2009-08-04 21:01:49