gpt4 book ai didi

c# - Contains on list太慢,如何改善?

转载 作者:太空狗 更新时间:2023-10-29 23:13:37 28 4
gpt4 key购买 nike

我有一个对象列表,我希望将其缩减为仅具有包含在单独列表中的属性的对象。

List1 是一个简单字符串列表。

List2 是包含两个字符串属性的对象列表; A和B。

List1 中不存在 A B 的所有项目都应删除。

这个过程非常依赖时间,需要尽可能快。目前我有以下实现;

var List1 = new List<String>() {"Around", "9000", "strings"}; //List of about 9000 strings
var List2 = databaseList.ToList(); //Around 2.5 million objects

var reducedList = new HashSet<Object>();
foreach (var item in List2)
{
if(List1.Contains(item.A) && List1.Contains(item.B))
{
reducedList.Add(item);
}
}

此过程大约需要 7 秒才能完成,这对于我目前的要求来说太慢了。

我已经尝试使用 LINQ 运行它,但给出了相同的结果,大约 7 秒。

var reducedList = List2.Where(r => List1.Contains(r.A)).Where(r => List1.Contains(r.B)).ToList();

有什么建议可以改进吗?

编辑:我无法在 SQL 方面执行此操作,因为我需要比较的 9000 个字符串无法“转换”为 SQL 查询,但会超出我们的 SQL Server 中允许的允许的 2100 个输入参数设置。

最佳答案

我还没有尝试过,但可能会提高性能。

var List1 = new List<String>() {"Around", "9000", "strings"};
var List2 = databaseList.ToList(); //Around 2.5 million objects

var reducedList = List2.RemoveAll(i => !List1.Contains(i.A) && !List1.Contains(i.B)).ToList();

关于c# - Contains on list太慢,如何改善?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34062562/

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