如何区分我的键值对列表?

11
如果我有一个列表List<KeyValuePair<string,string>>,例如。
["abc","123"]
["asc","123"]
["asdgf","123"]
["abc","123"]

我该如何区分这个列表?


4
按键、值或两者都不同? - D.R.
1
使用字典而不是列表 - Khan
1
字典不是一个好的答案:它不能通过值或两者都进行区分,并且在进行区分之前会给你重复键异常;-) - D.R.
2个回答

26

根据 KeyValue 去重:

var results = source.Distinct().ToList();

通过GroupBy调用上的属性更改以KeyValue为依据进行去重:

var results = source.GroupBy(x => x.Key).Select(g => g.First()).ToList();

-1
如果您希望拥有不同的键值对,应该使用一组(pair对象)Set;如果您希望拥有不同的键,则应该使用Map/Dictionary。

.NET有适当的Set集合吗? - D.R.
2
ISet<T> 是一个接口,而 HashSet<T> 则是其实现。一切运作正常。 - Jacob
另一个常见的ISet<>SortedSet<>。编辑:尽管在构造时给定了IComparer<>SortedSet<KeyValuePair<,>>才有用。 - Jeppe Stig Nielsen
我的回答是回答了适合他需求的正确集合类型(没有重复项),这个集合类型的实际实现取决于他将如何使用它,而我们不知道! - Robadob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接