gpt4 book ai didi

c# - 搜索大型 ConcurrentBag?

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

.NET 4.5.1

我有一个包含 200,000 个对象的 ConcurrentBag。一个对象被两个 long 类型的属性认为是“唯一的”。

我需要检查包中是否存在以前存在的唯一对象,如果不存在,则添加它。

我认为做下面这样的事情是不正确的 -

var foundRef = mybag.Where( r => r.mainid == tempObj.mainid &&
r.subid == tempObj.subid);

尽快搜包的正确方法是什么?我确实需要“包”的并发性/安全性。

谢谢。

最佳答案

为什么不使用 ConcurrentDictionary<Tuple<long, long>, Foo> ?您的数据将由这两个属性索引 mainidsubid .

这种方法的唯一缺点是您必须创建新的 Tuple<long, long>每次你想从字典中检索一个值时:

var foundRef = myDict[new Tuple<long, long>(tempObj.mainid, tempObj.subid)];

但它会为您提供接近 O(1) 的最快访问时间。

关于c# - 搜索大型 ConcurrentBag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23146827/

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