当前位置: 首页 > news >正文

C# ConcurrentDictionary 中获取指定范围的元素

要从 ConcurrentDictionary<string, SlaveInfo> 中获取第 2 到第 5 个元素(索引 1 到 4,因为索引从 0 开始),可以使用 LINQ 的 Skip() 和 Take() 方法。不过需要注意的是,ConcurrentDictionary 是无序集合,获取的元素顺序可能不固定。

以下是实现方法:

using System;
using System.Collections.Concurrent;
using System.Linq;class Program
{static void Main(){// 创建示例ConcurrentDictionaryConcurrentDictionary<string, SlaveInfo> node_E8030312 = new ConcurrentDictionary<string, SlaveInfo>();// 添加示例数据for (int i = 1; i <= 10; i++){node_E8030312.TryAdd($"Key{i}", new SlaveInfo { Id = i, Name = $"Slave{i}" });}// 获取第2到第5个元素(索引1到4)var rangeItems = node_E8030312.Skip(1).Take(4).ToList();// 输出结果Console.WriteLine("获取第2到第5个元素:");foreach (var item in rangeItems){Console.WriteLine($"Key: {item.Key}, Value: Id={item.Value.Id}, Name={item.Value.Name}");}}
}// 示例类
class SlaveInfo
{public int Id { get; set; }public string Name { get; set; }
}

这段代码的核心是使用 Skip(1).Take(4)

  • Skip(1) 跳过第一个元素(索引 0)
  • Take(4) 获取接下来的 4 个元素(索引 1-4)

如果需要按照特定顺序获取元素(比如按照键排序),可以先排序再取范围:

// 按照键排序后获取范围
var sortedRange = node_E8030312.OrderBy(kv => kv.Key)  // 按键排序.Skip(1).Take(4).ToList();

或者,如果你的 SlaveInfo 类有特定的属性需要排序:

// 按照SlaveInfo的Id属性排序后获取范围
var sortedByIdRange = node_E8030312.OrderBy(kv => kv.Value.Id).Skip(1).Take(4).ToList();

需要注意的是,ConcurrentDictionary 的元素顺序是不确定的,除非你显式排序。如果元素的顺序对你很重要,建议使用其他有序集合或在查询时明确指定排序方式。

http://www.dtcms.com/a/243917.html

相关文章:

  • 解密Spring Boot:深入理解条件装配与条件注解
  • 教师端用户操作手册
  • 使用 C/C++、OpenCV 和 Libevent 构建联网人脸识别考勤系统 [特殊字符]‍[特殊字符]
  • docker和docker-compose的版本对应关系怎么看?
  • 顶顶通电话机器人功能列表
  • Spring Security是如何完成身份认证的?
  • 紫光展锐T8300以创新音频技术重塑感知世界
  • kafka-生产者(day-2)
  • python打卡第49天
  • 康谋方案 | 高精LiDAR+神经渲染3DGS的完美融合实践
  • 提升电子商务平台安全的有效策略
  • SSD,emmc 的写放大
  • k8s在节点上加污点
  • argocd部署cli工具并添加k8s集群
  • 数据安全进阶:30页数据安全管理培训精读【附全文阅读】
  • 跨域的本质与实战:从理论到松鼠短视频系统的演进-优雅草卓伊凡|卢健bigniu
  • window 显示驱动开发-如何查询视频处理功能(六)
  • 【Bluedroid】蓝牙启动之 RFCOMM_Init 流程源码解析
  • Android 默认第三方app运行权限(android11-13)
  • 【测试专栏】自动化测试——云存储项目
  • 计算机视觉与深度学习 | 基于Matlab的低照度图像增强算法原理,公式及实现
  • matlab红外与可见光图像配准算法
  • 学车笔记 变挡
  • 建站SEO优化之站点地图sitemap
  • Java多线程通信核心机制详解
  • UE5 学习系列(八)材质基础认知
  • 图数据库的理解
  • 【编译工具】(自动化)自动化测试工具:如何让我的开发效率提升300%并保证代码质量?
  • Ubuntu 22.04: 使用chroot切换到Ubuntu18.04运行环境进行开发编译
  • Roboguide工作站机器人重新安装软件包