Я пытаюсь перебрать отдельные значения по списку словарей:
Итак, у меня есть словарь пар ключ-значение.
Как получить только отдельные значения строковых ключей из списка словарей?
Я пытаюсь перебрать отдельные значения по списку словарей:
Итак, у меня есть словарь пар ключ-значение.
Как получить только отдельные значения строковых ключей из списка словарей?
var distinctList = mydict.Values.Distinct().ToList();
В качестве альтернативы вам не нужно вызывать ToList():
foreach(var value in mydict.Values.Distinct())
{
// deal with it.
}
Редактировать: я неправильно понял ваш вопрос и подумал, что вам нужны разные значения из словаря. Приведенный выше код обеспечивает это.
Ключи автоматически различаются. Так что просто используйте
foreach(var key in mydict.Keys)
{
// deal with it
}
Ключи различны в словаре. По определению.
Итак, myDict.Keys — это отдельный список ключей.
Перебирая разные ключи и делая что-то с каждым значением...
foreach( dictionary.Keys )
{
// your code
}
Если вы используете C# 3.0 и имеете доступ к LINQ:
Просто получение набора различных значений:
// you may need to pass Distinct an IEqualityComparer<TSource>
// if default equality semantics are not appropriate...
foreach( dictionary.Values.Distinct() )
{
}
Если словарь определен как:
Dictionary<string,MyType> theDictionary = ...
Тогда вы можете просто использовать
var distinctKeys = theDictionary.Keys;
При этом используется свойство Dictionary.Keys. Если вам нужен список, вы можете использовать:
var dictionaryKeysAsList = theDictionary.Keys.ToList();
Поскольку это словарь, ключи уже будут различны.
Если вы пытаетесь найти все отдельные значения (в отличие от ключей - в вопросе это было неясно) в словаре, вы можете использовать:
var distinctDictionaryValues = theDictionary.Values.Distinct(); // .ToList();