gpt4 book ai didi

linq - 查找其集合属性包含另一个列表中的项目的所有项目

转载 作者:行者123 更新时间:2023-12-03 11:26:44 25 4
gpt4 key购买 nike

我有一个对象 Foo 的集合,它有一个包含 People 对象列表的 ICollection 属性。

public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Person> People { get; set; }
}

我还有一个 Person 列表。
ICollection<Person> OtherPeople

我需要找到所有对象 Foo,其中 People 包含来自其他人的任何人。
是否有接受集合的 .Contains 版本?
类似的东西:
var result = from f in FooCollection
where f.People.Contains(otherPeople)
select f;

如果重要的话,我将它与 Entity Framework 一起使用。

最佳答案

您指的是使用 C# Linq 的 Any 方法。
Any方法基本上说明该集合(可枚举)中的任何元素是否满足条件,在您的情况下,条件是另一个集合是否包含其中一个元素。

例如。

public bool HasPeople(ICollection<Person> original, ICollection<Person> otherPeople)
{
return original.Any(p => otherPeople.Contains(p));
}

然而 Any方法返回 boolean说明集合是否有 Any满足条件的元素 - 这不会给我们哪些元素。

Linq 中另一个值得注意的方法是 Where 给我们所有满足条件的元素。

例如。
public IEnumerable<Person> GetPeople(ICollection<Person> original, ICollection<Person> otherPeople)
{
return original.Where(p => otherPeople.Contains(p));
}

我希望这能让你朝着正确的方向前进。 Entity Framework 应该无关紧要,因为它们是可枚举的。几乎忘了提到 Linq 方法相当简单,所以他们真的不需要在他们自己的方法中使用这些方法。

关于linq - 查找其集合属性包含另一个列表中的项目的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16660318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com