欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > C# ConcurrentDictionary 中获取指定范围的元素

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

2025/6/23 5:39:49 来源:https://blog.csdn.net/a876106354/article/details/148589888  浏览:    关键词: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 的元素顺序是不确定的,除非你显式排序。如果元素的顺序对你很重要,建议使用其他有序集合或在查询时明确指定排序方式。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词