【问题标题】:c# using Linq to sort a list of decimals [duplicate]c#使用Linq对小数列表进行排序[重复]
【发布时间】: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 而不使用任何参数。
  • 这可能会有所帮助stackoverflow.com/questions/5233179/…
  • 我在这里添加答案,因为该主题似乎已关闭。您在Sort 中使用IComparerIComparer 期望根据给定的可比较值返回 eiterh 1,0 或 -1。因此,您需要比较两位小数,并且您必须返回一个 int 作为结果。详情请见msdn.microsoft.com/en-us/library/…

标签: c# linq


【解决方案1】:

看看LINQOrderBy

prices=prices.OrderBy(x => x).ToList();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-27
    • 2020-06-10
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    相关资源
    最近更新 更多