我有一个KeyValuePair列表,它的值也是列表,例如
List<KeyValuePair<string, List<string>>> ListX = new List<KeyValuePair<string,List<string>>>();
ListX.Add(new KeyValuePair<string,List<string>>("a",list1));
ListX.Add(new KeyValuePair<string,List<string>>("b",list1));
ListX.Add(new KeyValuePair<string,List<string>>("a",list1));`我希望列表中的每个KeyValuePair的键不被复制,只有键,我可以在这个列表中使用不同的键吗?
例如,我希望列表中有"a“键的第三项被删除,因为它是重复的。
发布于 2016-03-03 05:56:34
虽然可以使用当前的List使其具有Distinct键,但我认为最简单的解决方案是使用Dictionary<string,List<string>>。
它正是你所需要的:
Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
dict.Add("a", new List<string>());
dict.Add("b", new List<string>());
dict.Add("a", new List<string>()); //will throw an error图片:

如果要将Key添加到字典中时,需要检查<Key,Value>是否已经存在,只需通过ContainsKey检查即可。
if (dict.ContainsKey(key)) //the key exists发布于 2016-03-03 06:04:03
var dictionaryX = ListX
.GroupBy(x => x.Key, (x, ys) => ys.First())
.ToDictionary(x => x.Key, x => x.Value);我不确定这是否是您所要寻找的,但这是一个查询,它将通过只获取每个重复键的第一个值将一个ListX转换为一个字典。
发布于 2016-03-03 05:33:37
您可以使用从Dictionary<TKey, TValue>继承的类IEnumerable<KeyValuePair<TKey, TValue>>。它是KeyValuePairs的集合,它只允许唯一的键。
https://stackoverflow.com/questions/35763842
复制相似问题