LINQ - 从对象层级中选择所有子元素

6

我有一个对象列表,其中包含一个字符串数组作为它们的属性之一。我想要获取一个不同的字符串数组,其中包含所有值。

我的对象长这样:

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

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

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

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

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

错别字在哪里?我一定是漏看了 :) - Jon Skeet
5
错别字在我的申请中。我迫不及待地等待StackOverflow适用于Visual Studio的插件发布,这样你就可以在我工作时修复我的应用程序了。 :-) - Jon Galloway

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接