【问题标题】:preventing adds of KVPs with duplicate key Values c#防止添加具有重复键值 c# 的 KVP
【发布时间】:2015-03-09 06:04:04
【问题描述】:

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

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

提前致谢!

【问题讨论】:

  • 你可以简单地使用字典来做这样的事情,我猜你错误地使用了 KeyValuePair
  • 哦忘了说这是一个 kvp

标签: c# list duplicates key keyvaluepair


【解决方案1】:

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

Dictionary

表示键和值的集合。

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

键唯一性

根据字典的相等比较器,字典中的每个键都必须是唯一的

添加数据时,只需使用Dictionary.ContainsKeyMethod,这将返回一个Boolean 值以指示密钥存在。

ContainsKey Method :

确定 Dictionary 是否包含指定的键。

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

附加:对于排序,使用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);
 } 

【讨论】:

  • 哦,我对我可以使用字典这一事实感到震惊......我还是 c# 的新手哈哈。谢谢你>。
  • @xglide 没问题,希望你得到正确的答案:) 如果它解决了你的问题或者是最好的解决方案,请标记它是正确的
  • 我忘记了我想按它们的值升序对集合进行排序。事后看来,我也应该在问题中添加这一点。我已经对其进行了编辑以反映这一点。
  • 只需使用 Linq : var items = from pair in dictionary orderby pair.Value 升序选择对; // 显示结果。 foreach (KeyValuePair pair in items) { Console.WriteLine("{0}: {1}", pair.Key, pair.Value); }
  • 您能否将其编辑到您的帖子中以进行格式化。我无法阅读它。谢谢=)
【解决方案2】:

你不使用字典有什么原因吗?

对于使用普通 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;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-09-23
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
相关资源
最近更新 更多