带值的SortedList和带lambda的简化循环

本文关键字:lambda 循环 和带 SortedList | 更新日期: 2023-09-27 18:21:46

我在这里有一块代码:

SortedList<char, int> alpha = new SortedList<char, int>();
List<string> A = new List<string>();
alpha.OrderByDescending(x => x.Value);
foreach (var a in alpha)
    A.Add(a.Key + ":" + a.Value);
  1. alpha.OrderByDescending(x => x.Value);不按值排序,而是按键排序。我可以知道代码出了什么问题吗?

  2. 我能简化一下吗:

    foreach (var a in alpha) A.Add(a.Key + ":" + a.Value);

转换为一个lambda语句?类似的东西

alpha.ForEach(x => A.Add(a.Key + ":" + a.Value));

带值的SortedList和带lambda的简化循环

语句alpha.OrderByDescending(x => x.Value);没有任何作用。。。Linq运算符是惰性的,在枚举它们的结果之前不会执行它们。由于您没有使用OrderByDescending的结果,它只是创建了一个惰性序列,生成按值排序的alpha项,如果枚举了它…OrderByDescending不对集合进行排序,它只是从集合中返回一个排序的项序列,而不修改集合本身。

你应该这样做:

foreach (var a in alpha.OrderByDescending(x => x.Value))
    A.Add(a.Key + ":" + a.Value);

这可能会有所帮助:

SortedList<char, int> alpha = new SortedList<char, int>();
alpha.Add('B',1);
alpha.Add('A',2);
alpha.Add('C',3);
var A= alpha.OrderByDescending(a =>a.Value)
        .Select (a =>a.Key+":"+a.Value)
        .ToList();