Подтвердить что ты не робот

Как пройти через 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>();
4b9b3361

Ответ 1

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);
}

Ответ 2

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

это была неправильная тема (значения цикла). Моя проблема состояла в том, чтобы перебирать пары значений ключа, а не только значения. Оставьте это здесь, если нет возражений в качестве возможной опции для получения значений из коллекции 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()); 
}

НТН

Dave

Ответ 3

 bool value = list[key];

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

Ответ 4

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

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]);
}