带值的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);
alpha.OrderByDescending(x => x.Value);
不按值排序,而是按键排序。我可以知道代码出了什么问题吗?我能简化一下吗:
foreach (var a in alpha) A.Add(a.Key + ":" + a.Value);
转换为一个lambda语句?类似的东西
alpha.ForEach(x => A.Add(a.Key + ":" + a.Value));
语句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();