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 次 |
| 最近记录: |