基于密钥的键值对比较

时间:2014-09-04 08:12:22

标签: c# asp.net keyvaluepair

Hello Guys Im陷入了困境。我正在创建一个像这样的键值对列表

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.ie之间它应该检查if条件if(C2 = B1)..我无法实现这一点..任何人都可以帮助我。我一直在尝试。我是一个新人,所以帮帮我

2 个答案:

答案 0 :(得分:1)

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)
        }
    }

答案 1 :(得分:-2)

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

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