[英]How can I transform a List <string> to a Dictionary<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.