2015-01-21 70 views
1

我想排序一個(JamMulai)是字符串,但值是數字。我想(JamMulai)排序數字Orderby字符串,但值是數字(雙)

我的查詢:

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實體無法識別方法 「雙ToDouble(System.String)」方法,和第方法不能將 翻譯成商店表達式。

+0

您正在使用{ 「13」, 「12,3」, 「7」, 「15」, 「10,3」};因爲j.JamMulai的價值是一個錯字或價值是這樣的,只是因爲它有「12,3」和「10,3」這將被視爲一個字符串事件即使你轉換或解析 – Rajesh 2015-01-21 05:01:15

+0

它不是一個錯字,值JamMulai在桌子上就像那個 – 2015-01-21 06:26:38

回答

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(); 
+0

當我開始這個項目時它仍然不工作。該錯誤是:其他信息:LINQ to Entities不能識別方法'Double Parse(System.String)'方法,並且此方法不能轉換爲存儲表達式。 – 2015-01-21 06:39:16

+0

試着看這個帖子 http://stackoverflow.com/questions/5971521/linq-to-entities-does-not-recognize-the-method-double-parsesystem-string-met – 2015-01-21 07:11:00

1

這裏的問題是,你的查詢被轉換成SQL和數據庫上運行,和Entity Framework不知道如何Double ToDouble(System.String)轉化爲有效的SQL代碼,則可以將數據加載到存儲器,然後執行排序依據: -

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

嗨,我怎麼orderBy雙重任何語言?我遇到了英文和葡萄牙語的問題。 – Patrick 2015-05-06 09:58:33