【问题标题】:Orderby string but that values are numbers (double)Orderby 字符串,但该值是数字(双精度)
【发布时间】:2015-01-21 04:42:41
【问题描述】:

我想对 (JamMulai) 进行排序,它们是字符串,但值是数字。我想(JamMulai) 进行数字排序

我的查询:

var query = from j in db.JadwalKuliah
            orderby j.JamMulai
            select j

j.JamMulai 的值类似于{ "13", "12,3", "7", "15", "10,3"};

输出:

(10,3), (12,3), 13, 15, 7

我想要:

7, (10,3), (12,3), 13, 15

我正在尝试转换为双精度:

var query = from j in db.JadwalKuliah
            orderby Convert.ToDouble(j.JamMulai)
            select j

但错误是:

附加信息:LINQ to Entities 无法识别该方法 'Double ToDouble(System.String)' 方法,而这个方法不能 翻译成商店表达式。

【问题讨论】:

  • 您正在使用 { "13", "12,3", "7", "15", "10,3"};因为 j.JamMulai 值是一个错字还是该值只是因为它具有“12,3”和“10,3”,即使您转换或解析也会被视为字符串
  • 不是错字,表格中JamMulai的值是这样的

标签: c# linq


【解决方案1】:

这里的问题是您的查询正在被翻译成SQL并在数据库上运行,而Entity Framework不知道如何将Double ToDouble(System.String)翻译成有效的SQL代码,您可以将数据加载到内存中然后执行orderby :-

var query = db.JadwalKuliah.ToList()
              .OrderBy(x => double.Parse(x))
              .ToArray();

【讨论】:

  • 嗨,我如何订购任何语言的 Double?我在使用英语和葡萄牙语时遇到问题。
【解决方案2】:

使用parse 而不是转换

    var numbers = new string[]{ "13", "12,3", "7", "15", "10,3"};

    var sortedNumbers = numbers.
        Select(number => double.Parse(number)).
        OrderBy(number => number).ToArray();

【讨论】:

  • 当我开始这个项目时它仍然无法工作。该错误是:附加信息:LINQ to Entities 无法识别方法“Double Parse(System.String)”方法,并且此方法无法转换为存储表达式。
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 2016-08-19
  • 1970-01-01
相关资源
最近更新 更多