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

Jon*_*way 5 c# linq

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

我的对象看起来像这样:

public class Zoo {
    string Name { get; set;}
    string[] Animals { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 14

var query = zoos.SelectMany(zoo => zoo.Animals)
                .Distinct();
Run Code Online (Sandbox Code Playgroud)

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

var query = (from zoo in zoos
             from animal in zoo.Animals
             select animal).Distinct();
Run Code Online (Sandbox Code Playgroud)

  • 错字在我的申请中.我不能等到Visual Studio的StackOverflow插件出来,所以你可以在我工作时修复我的应用程序.:-) (4认同)