LINQ如何从一个集合中选择包含另一个集合中子项的父项?

4

我有一个可观察的集合即Owners,这个集合有子项即Dogs。

现在,如果给定另一个本地Dogs的集合,我该如何选择所有Owners,其中他们的Dogs存在于我的本地Dogs集合中。相等条件是Dog == Dog。

1个回答

5
以下代码应该能够解决问题。这将为您提供所有至少有一只狗在本地列表中的所有拥有者。
owners.Where(owner => owner.Dogs.Any(dog => localDogs.Contains(dog)))

如果您只想获取所有狗狗都在本地列表中的主人,请使用以下方法。
owners.Where(owner => owner.Dogs.All(dog => localDogs.Contains(dog)))

微小的差别在于Any()All()


哇,太棒了。优美简洁的一行代码。谢谢。我原本想用嵌套循环来解决问题。我也意识到我的问题并不完全清晰,但你推断出了正确的含义。 - tim

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