繁体   English   中英

如何从Dictionary中检索前n个元素 <string, int> ?

[英]How can I retrieve first n elements from Dictionary<string, int>?

有没有办法从C#中的Dictionary中检索前n个元素?

字典本身并不是有序的,你不能依赖“第一”的含义。 来自MSDN:“对于枚举...返回项目的顺序是未定义的。”

您可以根据平台版本使用OrderedDictionary ,并且创建Dictionary的自定义后代类并不是特别复杂。

请注意,没有Dictionary显式排序,因此尽管以下代码将返回n项目,但无法保证框架将如何确定要返回的n项目。

using System.Linq;

yourDictionary.Take(n);

上面的代码返回包含n项目的IEnumerable<KeyValuePair<TKey,TValue>> 您可以轻松地将其转换为Dictionary<TKey,TValue>如下所示:

yourDictionary.Take(n).ToDictionary();

你不能真正从Dictionary<TKey,TValue>获取前N个元素Dictionary<TKey,TValue>因为它不是有序集合。 所以它真的没有First,Last等概念......但正如其他人所指出的那样,如果你只是想采用N个元素而不管顺序LINQ take函数工作正常

var map = GetTheDictionary();
var firstFive = map.Take(5);

通常省略演员到字典是行不通的:

dictionary = dictionary.Take(n);

这样的简单案例也不会:

dictionary = dictionary.Take(n).ToDictionary();

最可靠的方法是显式转换:

dictionary = dictionary.Take(n).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

可以用Linq为例吗?

 var dictionary = new Dictionary<string, int>();

 /// Add items to dictionary

 foreach(var item in dictionary.Take(5))
 {
      // Do something with the first 5 pairs in the dictionary
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM