簡體   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