首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要区分的KeyValuePair列表

要区分的KeyValuePair列表
EN

Stack Overflow用户
提问于 2016-03-03 05:22:19
回答 5查看 4.3K关注 0票数 3

我有一个KeyValuePair列表,它的值也是列表,例如

代码语言:javascript
复制
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“键的第三项被删除,因为它是重复的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-03-03 05:56:34

虽然可以使用当前的List使其具有Distinct键,但我认为最简单的解决方案是使用Dictionary<string,List<string>>

它正是你所需要的:

代码语言:javascript
复制
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检查即可。

代码语言:javascript
复制
if (dict.ContainsKey(key)) //the key exists
票数 3
EN

Stack Overflow用户

发布于 2016-03-03 06:04:03

代码语言:javascript
复制
var dictionaryX = ListX
    .GroupBy(x => x.Key, (x, ys) => ys.First())
    .ToDictionary(x => x.Key, x => x.Value);

我不确定这是否是您所要寻找的,但这是一个查询,它将通过只获取每个重复键的第一个值将一个ListX转换为一个字典。

票数 2
EN

Stack Overflow用户

发布于 2016-03-03 05:33:37

您可以使用从Dictionary<TKey, TValue>继承的类IEnumerable<KeyValuePair<TKey, TValue>>。它是KeyValuePairs的集合,它只允许唯一的键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35763842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档