Как пройти через 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>();
Ответы
Ответ 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]);
}