Как перебрать SortedList, получив ключ и значение

Следующий код перебирает список и получает значения, но как мне написать аналогичное утверждение, которое получает и ключи, и значения

foreach (string value in list.Values)
{
    Console.WriteLine(value);
}

например как то так

    foreach (string value in list.Values)
{
    Console.WriteLine(value);
        Console.WriteLine(list.key);
}

код для списка:

SortedList<string, string> list = new SortedList<string, string>();

4 ответа

Решение
foreach (KeyValuePair<string, string> kvp in list)
{
    Console.WriteLine(kvp.Value);
    Console.WriteLine(kvp.Key);
}

Из MSDN:

GetEnumerator возвращает перечислитель типа KeyValuePair<TKey, TValue> который перебирает SortedList<TKey, TValue>,

Как сказал Джон, вы можете использовать var ключевое слово вместо записи имени типа итерационной переменной (тип будет выведен из использования):

foreach (var kvp in list)
{
    Console.WriteLine(kvp.Value);
    Console.WriteLine(kvp.Key);
}

Извиняюсь...

это была неправильная тема (перебрать значения). Моя проблема заключалась в цикле между парами ключ-значение, а не только значениями. Оставим это здесь, если нет никаких возражений в качестве возможного варианта получения значений из коллекции SortedList.

Я просто попытался выяснить эту ошибку, и мое решение было использовать DictionaryEntry тип для замены ошибки KeyValuePair тип. Найдена по ссылке MS https://msdn.microsoft.com/en-us/library/system.collections.dictionaryentry(v=vs.100).aspx

В моем случае у меня был код, создающий SortedList тип коллекции и ни var или же KeyValuePair типы работали (var ошибка при попытке прочитать ключ / значение из элемента коллекции и KeyValuePair ошибка в исходном определении цикла. Оба с ошибкой "Specified cast is not valid")

Итак, вот пример кода, который работал для меня:

SortedList _dims = GetList("mysortedlist");
foreach (DictionaryEntry kvp in _dims)
{
    Console.WriteLine(kvp.Key.ToString());
    Console.WriteLine(kvp.Value.ToString()); 
}

НТН

Дейв

 bool value = list[key];

это может помочь вам

Просто итерируйте с использованием ключей и получите значение для каждого ключа:

SortedList<string, string> info = new SortedList<string, string>();

info.Add("path", "път");
info.Add("folder", "директория");
info.Add("directory", "директория");
info.Add("file", "Файл");

foreach (string key in info.Keys)
{
 Console.WriteLine("\t{0}\t{1}", key, info[key]);
}
Другие вопросы по тегам