Получить непосредственно словарь <int, object> первый ключ без foreach в C # - PullRequest
3 голосов
/ 29 марта 2012

У меня есть следующее содержание словаря:

[0] {75, SimpleObject}
[1] {56, SimpleObject}
[2] {65, SimpleObject}
[3] {12, SimpleObject}
...

Я хочу получить первый ключ, значит 75, без foreach.

Возможно, слово key должно указывать на [0], а не на 75.

Поскольку на основании этого ключа я хочу использовать это SimpleObject, я написал:

SimpleObject s = dictionary[0] as SimpleObject;

но VS2010 выдает исключение:

The given key was not present in the dictionary.

Я знаю, что [0] означает номер ключа 0 из словаря, значит, если бы я мог иметь

[0] {72,  SimpleObject} //here
[1] {56, SimpleObject}
[2] {65, SimpleObject}
[3] {12, SimpleObject}
...

, тогда я долженполучить корреспондента SimpleObject.

Извините, я впервые использую Словарь, и я хочу узнать больше.

Вопрос: Как получить число 75 и его SimpleObject?

Спасибо.

PS: я знаю, что в StackOverflow уже существует подобная тема, но ни одна из них не помогает мне получить этот ключ.

Ответы [ 6 ]

10 голосов
/ 29 марта 2012
using System.Linq;

...

dictionary.First().Key // Returns 75
dictionary.First().Value // returns the related SimpleObject
5 голосов
/ 29 марта 2012

Не то, чтобы Dictionary<TKey, TValue> была неупорядоченной коллекцией, следовательно, она не имеет понятия первого или последнего.Порядок представленных предметов по сути случайный.Вы не можете зависеть от того, чтобы это было одинаково между экземплярами вашего приложения.

Если вам нужен какой-то заказ, вам следует использовать SortedDictionary<TKey, TValue>.Представленные здесь элементы выполнены в упорядоченном виде и дают согласованные результаты между запусками вашего приложения

// Consistent output is produced below
var dictionary = new SortedDictionary<int, SimpleObject>();
var pair = dictionary.First();
Console.WriteLine("{0} -> {1}", pair.Key, pair.Value);
1 голос
/ 29 марта 2012

A Dictionary - это структура пар (ключ, значение) без явного упорядочения.Возможно, то, что вы ищете, было бы полезно с SortedDictionary, но это не имеет значения с обычным Dictionary.

0 голосов
/ 29 марта 2012

Словарь не является упорядоченной коллекцией, у него нет индексов.

Используйте ключ для доступа к элементу:

SimpleObject s = dictionary[75];
0 голосов
/ 29 марта 2012

75 - это значение ключа, а не индекс:

SimpleObject s = dictionary[75] as SimpleObject;

A Dictionary<T,U> неупорядочено, поэтому не следует полагаться на порядок содержащихся в нем пар ключ-значение.

0 голосов
/ 29 марта 2012

Вы можете использовать

dictionary.First();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...