LINQ - 从对象层次结构中选择所有子项

时间:2009-08-04 20:56:11

标签: c# linq

我有一个List个对象,其中包含一个字符串数组作为其属性之一。我想获得一个包含所有值的独特字符串数组。

我的对象如下:

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

有些动物园可能只有一只动物,有些可能有很多动物。什么是最简单的Lambda表达式或LINQ查询,以便在List<Zoo>的所有动物园中获取所有动物的唯一列表?

1 个答案:

答案 0 :(得分:14)

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

或者如果你是一个查询表达式粉丝(我不会这么简单):

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