2009-08-04 82 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