c# - 获取 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
解决方案
当你在字典上使用 Linq 时,你失去了字典的伟大之处,即不断的查找时间。当你可以有一个 O(1) 时,为什么还有一个潜在的 O(n)?
if (pendingReq.TryGetValue(imei, out var bag))
{
// use bag.Count
}
推荐阅读
- java - 如何在安卓谷歌地图的两个位置之间实现方向搜索
- mysql - 根据 MySQL 中的多列确定排名
- python - 存储 TfidfVectorizer 以供将来使用
- amazon-redshift - 查询缓存amazon redshift
- c# - 对于 Azure 时间触发功能。是否必须添加 Microsoft.Azure.WebJobs.Extensions。如果是,为什么?
- python - 区分图像中数字的颜色
- spring - application.properties 中用于 Spring Boot 的 Keycloak 配置
- r - R - 使用 par(mfrow) 命令后变回回归图。
- javascript - 如何使用 ES2016 按多个条件过滤对象数组?
- c - 为 qsort 的结构编写比较函数?