Как перебрать 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());
}
НТН
Дейв
Просто итерируйте с использованием ключей и получите значение для каждого ключа:
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]);
}