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

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

我的对象看起来像这样:

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

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

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

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

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