我有这样的字典......
Dictionary<string, Dictionary<string, double>>
如何从所有父词典值的所有词典中获取所有Distinct
或unique
子词典键的列表(父词典值只是子词典)?
这是在C#中执行此操作的最快方法吗?
答案 0 :(得分:1)
然后,您需要在字典的SelectMany()
属性上调用Values
,然后使用Distinct()
通过使用默认的相等比较器从序列中获取不同的元素。
var res = myDict.Values.SelectMany(x => x.Keys).Distinct().ToList();
答案 1 :(得分:1)
使用LINQ非常简单:
var result = myDict.Values.SelectMany(x => x.Keys)
.Concat(myDict.Keys)
.Distinct()
.ToList();
但即使没有LINQ,使用HashSet<string>
时也非常容易:
var set = new HashSet<string>();
foreach(var outerItem in myDict)
{
set.Add(outerItem.Key);
foreach(var innerKey in item.Value.Keys)
{
set.Add(innerKey);
}
}
HashSet<T>
只保留不同的项目,因此两次添加相同的字符串不会有任何区别。
PS。下次你应该先尝试编写代码,并在遇到问题时提出问题,你不能自己克服。 Stack Overflow不是'我想要代码,给我代码'那种网站。
答案 2 :(得分:0)
此代码使用字符串键和双值创建一个Dictionary。
Dictionary<string, double> d = new Dictionary<string, double>()
{
};
// Store keys in a List
List<string> list = new List<string>(d.Keys);
// Loop through list
foreach (string k in list)
{
//From here you can choose distinct key
}
答案 3 :(得分:0)
如果我正确读这个:
IEnumerable<string> uniqueChildKeys = dictOfDicts
.SelectMany(d => d.Value.Keys)
.Distinct();