防止添加具有重复键值的 KVP c#

preventing adds of KVPs with duplicate key Values c#

我有一个 (int,int) KeyValuePairs 列表,如果密钥已经存在,我想防止添加到这个列表中。这个功能已经存在了吗?还是我必须以其他方式阻止添加?

编辑:另外,我希望能够按值升序对集合进行排序。有没有办法做到这一点?

提前致谢!

最好的方法是使用 Dictionary 而不是 List<> of KeyValuePair,这也是一个键值对集合,但有额外的成员。

Dictionary :

Represents a collection of keys and values.

在您的情况下,您可以简单地使用 Dictionary<int,int> ,这意味着具有 int 键和 int 值的字典。

密钥唯一性

Every key in a Dictionary must be unique according to the dictionary's equality comparer

添加数据时,只需使用 Dictionary.ContainsKey Method 即可 return 一个 Boolean 值来指示 Key 存在。

ContainsKey Method :

Determines whether the Dictionary contains the specified key.

希望您仔细阅读文件并满足要求。

附加: 用于排序,,使用 LINQ 会很容易 (Source)

// dictionary is our Dictionary<int,int>
var items = from pair in dictionary orderby pair.Value ascending select pair; 

// Display results.
 foreach (KeyValuePair<string, int> pair in items)
 { 
      Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
 } 

您有没有使用词典的原因?

要使用普通的 List 和 KeyValuePair,你可以使用下面的代码

//函数内部

foreach (KeyValuePair<int, int> kvp in myList)  
   if (kvp.Key == key)  
        return;  
myList.Add(new KeyValuePair<int, int>(key, value));  

编辑: 使用字典时,您可以使用以下代码

var items = from pair in dictionary
            orderby pair.Value ascending
            select pair;