作者allyusd (夢幻賤狗)
看板C_Sharp
標題Re: [問題] 使用.Compute("max( )")出現詭異結果
時間Sun Sep 8 10:50:39 2013
推文有說該欄型別是string,
所以 Max 是字串排序結果,不是數字比較結果
以第一個列子來說:
"6102" 跟 "940" 的比較,
第一個字是 '6' < '9',所以 "6102" < "940"
"9999" 跟 "940" 的比較,
第一個字是 '9' = '9' 然後
第二個字是 '9' > '4' 所以 "9999" > "940"
所以你要先將該欄位轉型為數字再比較,
如果你的.net 版本是3.5以上的話,可以使用LINQ:
int maxLevel = flow.AsEnumerable().Max(dt => Convert.ToInt32(dt["VOL"]));
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.134.7
1F:推 Trader5566:感謝 原來可以這樣用 不然我只想到用迴圈複製到另一個 09/08 12:29
2F:→ Trader5566:dt去 轉型再篩選 T_T Q_Q||| 09/08 12:30
3F:→ fireslayer:這是LINQ嗎? 我是不太熟 不過感覺是lambda吧 09/10 00:52
4F:→ allyusd:兩者都有 09/11 21:10