我正在尝试在字典列表上循环显示不同的值:
所以我有一个关键值对字典。
如何从字典列表中获取字符串键的不同值?
答案 0 :(得分:23)
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
}
答案 1 :(得分:5)
键在字典中是不同的。 按照定义。
所以 myDict.Keys 是一个独特的键列表。
答案 2 :(得分:2)
循环使用不同的键并对每个值执行某些操作...
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() )
{
}
答案 3 :(得分:0)
如果字典定义为:
Dictionary<string,MyType> theDictionary = ...
然后你可以使用
var distinctKeys = theDictionary.Keys;
这使用Dictionary.Keys属性。如果您需要列表,可以使用:
var dictionaryKeysAsList = theDictionary.Keys.ToList();
因为它是一本字典,所以键已经是不同的了。
如果你试图在字典中找到所有不同的值(而不是键 - 在问题中不清楚),你可以使用:
var distinctDictionaryValues = theDictionary.Values.Distinct(); // .ToList();