iT邦幫忙

0

C# LINQ OrderByDescending 之根據值超過10萬時出現異常

如題
今日發現使用OrderByDescending排序之資料僅顯示至99999
檢查後發現序號超過10萬之筆數沒被排序到
想請問這是LINQ的限制還是設定可更改的呢?
感謝各位
祝聖誕快樂~

1 個回答

1
japhenchen
iT邦超人 1 級 ‧ 2020-12-25 10:04:10
最佳解答

這個序號欄位是varchar格式的嗎?

a500197 iT邦新手 5 級 ‧ 2020-12-25 10:24:18 檢舉

是的
是因為這個原因嗎?

數值(integer,long,double,float,number)才能直接排序,遇到varchar型式的序列,不能直接排序,不然會出現
100000
99991
99992
99993
99994
....
99999
這樣的怪異現象

如果要LINQ,你可以把資料結果.ToList()再.OrderBy(),如

var data = (from p in myDB.Table
            where .....
            select p).ToList().OrderBy(s=>int.Parse(s.id));

但如果這個id裡有null或非數字字元,會出錯哦

a500197 iT邦新手 5 級 ‧ 2020-12-25 10:50:05 檢舉

原來如此
感謝大大經驗分享!

我要發表回答

立即登入回答