Как я могу получить первые n элементы из Словаря <строка, интервал>?

Существует ли способ получить первые n элементы из Словаря в C#?

8
задан Uwe Keim 14 July 2019 в 19:15
поделиться

4 ответа

Note that there's no explicit ordering for a Dictionary, so although the following code will return n items, there's no guarantee as to how the framework will determine which n items to return.

using System.Linq;

yourDictionary.Take(n);

The above code returns an IEnumerable> containing n items. You can easily convert this to a Dictionary like so:

yourDictionary.Take(n).ToDictionary();
9
ответ дан 5 December 2019 в 04:46
поделиться

Словари не упорядочены как таковые , вы не можете полагаться на «первое», фактически означающее это. Из MSDN: «Для перечисления ... Порядок, в котором возвращаются элементы, не определен».

Вы можете использовать OrderedDictionary в зависимости от версии вашей платформы, и это не особенно сложно. вещь, создаваемая как пользовательский класс-потомок Dictionary.

17
ответ дан 5 December 2019 в 04:46
поделиться

Вы не можете взять первые N элементов из словаря , потому что это не упорядоченная коллекция. Так что в действительности он не имеет понятия «Первый», «Последний» и т. Д. Но, как уже отмечали другие, если вы просто хотите взять N элементов независимо от порядка, функция «LINQ take» работает нормально

var map = GetTheDictionary();
var firstFive = map.Take(5);
6
ответ дан 5 December 2019 в 04:46
поделиться

Could use Linq for example?

 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
 }
3
ответ дан 5 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: