ann*_*ata 17
字典本身并不是有序的,你不能依赖"第一"的含义.来自MSDN:"对于枚举...返回项目的顺序是未定义的."
您可以根据平台版本使用OrderedDictionary,并且创建Dictionary的自定义后代类并不是特别复杂.
请注意,a没有明确的排序Dictionary
,因此尽管以下代码将返回n
项目,但无法保证框架将如何确定n
要返回的项目.
using System.Linq;
yourDictionary.Take(n);
Run Code Online (Sandbox Code Playgroud)
上面的代码返回一个IEnumerable<KeyValuePair<TKey,TValue>>
包含n
项目.您可以轻松地将其转换为Dictionary<TKey,TValue>
如此:
yourDictionary.Take(n).ToDictionary();
Run Code Online (Sandbox Code Playgroud)
你不能真正从a中获取前N个元素,Dictionary<TKey,TValue>
因为它不是有序集合.所以它真的没有First,Last等概念......但正如其他人所指出的那样,如果你只想采用N个元素而不管顺序LINQ take函数是否正常工作
var map = GetTheDictionary();
var firstFive = map.Take(5);
Run Code Online (Sandbox Code Playgroud)
通常,省略强制转换为字典是行不通的:
dictionary = dictionary.Take(n);
Run Code Online (Sandbox Code Playgroud)
这样的简单情况也不会:
dictionary = dictionary.Take(n).ToDictionary();
Run Code Online (Sandbox Code Playgroud)
最可靠的方法是显式转换:
dictionary = dictionary.Take(n).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8192 次 |
最近记录: |