首页 > 解决方案 > 获取 ConcurrentDictionary 中的 ConcurrentBag 项数

问题描述

我有一个并发词典:

public static ConcurrentDictionary<string, ConcurrentBag<string>> pendingReq = new ConcurrentDictionary<string, ConcurrentBag<string>>();

如何返回并发包中的项目数?我试过什么:

pendingReq.Where(x => x.Key == imei).Select(x => x.Value.Select(x => x.Any())).Count() > 0

标签: c#entity-framework

解决方案


当你在字典上使用 Linq 时,你失去了字典的伟大之处,即不断的查找时间。当你可以有一个 O(1) 时,为什么还有一个潜在的 O(n)?

if (pendingReq.TryGetValue(imei, out var bag))
{
    // use bag.Count
}

推荐阅读