仅基于密钥的键值对比较

本文关键字:键值对 比较 密钥 于密钥 | 更新日期: 2023-09-27 18:20:32

大家好,我陷入了困境。我正在创建一个键值对列表,类似于这个

var list = new List<KeyValuePair<string, int>>();
list.Add(new KeyValuePair<string, int>("C2", 1));
list.Add(new KeyValuePair<string, int>("C2", 2));
list.Add(new KeyValuePair<string, int>("A1", 4));
list.Add(new KeyValuePair<string, int>("B1", 5));
list.Add(new KeyValuePair<string, int>("B1", 6));

现在添加完项目。我想要的是根据关键字对列表进行排序。我用这个代码对上面的列表进行了排序

list.Sort(new KvpKeyComparer<string, int>());

输出类似于

[A1, 4]
[B1, 5]
[B1, 6]
[C2, 1]
[C2, 2] 

现在我想要的是比较索引4处最后一个键的值,即[c2,2]到[c2,1]使用if条件。但我只想比较c2和c2 n,而不是整个对[c2,2]和[c2,1]。在此基础上,我将进行一些操作。第一次比较后,我将比较索引3和索引,即[c2,1]和[b1,6]。同样,比较应该在c2和b1之间。即,它应该检查if条件,即if(c2=b1)。。我不能做到这一点。。有人能帮我吗?我一直在尝试。我是一个新手,所以帮我解决

仅基于密钥的键值对比较

var list2 = new List<KeyValuePair<string, int>>();
     for (int i=0;i<list.Count-1;i++)
    {
       if (list[i].Value>list[i+1].Value)
        {         
          list2.Add(new KeyValuePair<string, int>(list[i].Key,list[i].Value)
        }
    }

一个更容易的选择是使用LINQ进行排序:

var orderedList = list.OrderBy(kvp => kvp.Key).ThenBy(kvp => kvp.Value).ToList();