【发布时间】:2016-11-29 19:07:53
【问题描述】:
正如标题所示,我有一个价格列表,我希望对其进行排序。 我试过这样做:
prices.Sort((a, b) => a - b);
但我得到一个错误:
无法将类型“十进制”隐式转换为“整数”。 无法将 lambda 表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型
我试图扩展它并做类似的事情
prices.Sort((a, b) {
var x = double.Parse(a);
var y = double.Parse(b);
return x - y;
});
但我遇到了同样的错误。 有谁知道我如何轻松做到这一点?
【问题讨论】:
-
价格列表
T 的类型是什么?您能举一个列表的示例以及您希望如何排序吗? -
查看您尝试调用的
List<T>.Sort的重载签名。你期望它如何工作?我建议使用 LINQ 和OrderBy代替,或者使用decimal.Compare作为比较......或者直接调用Sort而不使用任何参数。 -
我在这里添加答案,因为该主题似乎已关闭。您在
Sort中使用IComparer。IComparer期望根据给定的可比较值返回 eiterh 1,0 或 -1。因此,您需要比较两位小数,并且您必须返回一个 int 作为结果。详情请见msdn.microsoft.com/en-us/library/…