【问题标题】:list of dictionaries order by value C#按值排序的字典列表 C#
【发布时间】:2021-02-23 10:34:22
【问题描述】:

我怎样才能按照字典列表的降序按排序

        List<Dictionary<int, int>> myList = new List<Dictionary<int, int>>();
        Dictionary<int, int> obj = new Dictionary<int, int>();
        obj.Add(1, 2);
        myList.Add(obj);
        myList.Add(obj);

        Dictionary<int, int> obj2 = new Dictionary<int, int>();
        obj2.Add(2, 4);
        myList.Add(obj2);

        Dictionary<int, int> obj3 = new Dictionary<int, int>();
        obj3.Add(3, 3);
        myList.Add(obj3);
        myList.Add(obj3);
        myList.Add(obj3);

预期输出将是

[0][2,4], 
[1][3,3], 
[2][3,3], 
[3][3,3],  
[4][1,2],
[5][1,2]

【问题讨论】:

  • 您要订购哪个值?
  • 按第二个 int 值
  • 您希望输出是什么?如果你做了obj3.Add(0,0)呢?
  • 预期输出将是 [0][2,4], [1][3,3], [2][3,3], [3][3,3], [4][1,2], [5][1,2] 现在 0 值我不考虑 :)
  • 使用如下: var results = myList.SelectMany((x, i) => x.Select(y => new { x = x, key = y.Key, value = y.Value } )).OrderByDescending(x => x.value).ToList();

标签: c# asp.net .net asp.net-mvc


【解决方案1】:

你可以这样做

  var orderedValues = myList
            .SelectMany(x => x)
            .OrderByDescending(x => x.Value)
            .ToList();

并输出数据

for (int i = 0; i < orderedValues.Count(); i++)
{
    Console.WriteLine($"[{i}][{orderedValues[i].Key},{orderedValues[i].Value}]");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 2010-09-09
    相关资源
    最近更新 更多