![](/img/trans.png)
[英]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.