排序列表与价值,并简化环路与拉姆达
问题描述:
我这里的代码块:排序列表与价值,并简化环路与拉姆达
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);
成一个拉姆达声明?像
alpha.ForEach(x => 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();
答
声明alpha.OrderByDescending(x => x.Value);
没有效果... LINQ的运营商是懒惰的,他们不执行,直到你列举他们的结果。既然你不使用的OrderByDescending
的结果,它只是创建了一个懒序列将产生的alpha
按值排序的项目,如果你枚举它...... OrderByDescending
不排序的集合,它只是返回来自集合的已排序项目序列,而不修改集合本身。
你应该做的是这样的:
foreach (var a in alpha.OrderByDescending(x => x.Value))
A.Add(a.Key + ":" + a.Value);
感谢汤姆,但
变种A = alpha.OrderByDescending(A => a.value中) 。选择(a => a.Key +“:”+ a.Value) .ToList();
适合我 – alkk 2012-02-21 06:18:18