Orderby字符串,但值是数字(双)

时间:2015-01-21 04:42:42

标签: c# linq

我想对字符串(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

我正在尝试转换为double:

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

但错误是:

  

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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

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