大家好,我陷入了困境。我正在创建一个键值对列表,类似于这个
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();