gpt4 book ai didi

c# - 列表中包含两个属性的项目

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:14 25 4
gpt4 key购买 nike

我有一个对象列表 X(名称为 x),其属性为 ab相同类型的 Location。我还有一个位置列表 y。我需要在 x 中找到 ab 包含在列表 y 中的所有对象。

我可以使用循环和 Where 来完成,但由于这两个列表都很大,我需要一个性能非常好的解决方案。在这种情况下有什么方法可以使用 Intersect 吗?还是别的?

这里是一些伪代码

class X
{
Location a;
Location b;
}

GetMatches(List<X> x, List<Location> y) { ?? }

最佳答案

首先将 y 列表转换为 HashSet .

var yHashSet = y.ToHashSet();

然后快速轻松地获得匹配项:

private static List<X> GetMatches(List<X> x, HashSet<Location> y)
{
return x
.Where(item => y.Contains(item.a) && y.Contains(item.b))
.ToList();
}

让它并行以变得更快:

private static List<X> GetMatchesParallel(List<X> x, HashSet<Location> y)
{
return x
.AsParallel()
.AsOrdered()
.Where(item => y.Contains(item.a) && y.Contains(item.b))
.ToList();
}

关于c# - 列表中包含两个属性的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56147942/

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