gpt4 book ai didi

需要 c# LINQ Faster 解决方案。查询大型对象列表

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

我正在寻找以下问题的更快解决方案。

我有三个不同商店的三个产品列表。我想创建一个包含三个商店中所有可用产品的唯一列表,以及一个出现在多个商店中的产品的唯一列表。

class Product{
public int Id;
//
public Product(int id)
{
this.Id = id;
}
}
List<Product> store1 = new List<Product>();
List<Product> store2 = new List<Product>();
List<Product> store3 = new List<Product>();
List<Product> allUniqueProducts = new List<Product>();
List<Product> moreThanOneStore= new List<Product>();

用一些任意值填充列表

for(int i=0;i<10000;i++){
store1.Add(new Product(i));
store2.Add(new Product(i+2000));
store3.Add(new Product(i+5000));
}

这是我的解决方案,但是当列表很大(在 10,000 左右)时,此代码运行得非常慢。

processStoreList(store1);
processStoreList(store2);
processStoreList(store3);

void processStoreList( List<Product> storeList ){

foreach ( Product pd in storeList ){

if ( !( allUniqueProducts.Count( x => x.Id == pd.Id ) > 0 ))
allUniqueProducts.Add(pd);

else if ( !( moreThanOneStore.Count( x => x.Id == pd.Id ) > 0 ))
moreThanOneStore.Add(pd);
}
}

有什么建议吗?

最佳答案

你应该使用 Dictionary<int, Product>而不是 List<Product> .

这边,ContainsKey将是 O(1) 而不是 O(n)

关于需要 c# LINQ Faster 解决方案。查询大型对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372129/

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