C# string.Compare 的誤用,數字當字串判斷的結果跟純字串會不同

C#  string.Compare 的誤用

這是花了我幾個小時的經驗

值得記錄

但正常的設計應該不會遇到相同的狀況

記錄提醒自已,別再錯了

 

背景說明:

1-DB資料庫存值是用NVARCAHR的字串,但存入時,也把數字當字串存檔

2-在C#取出數字或字串後,直接用string.Compare做比對

3-在測試字串跟 數字轉字串時,string.Compare比對的值跟預想的不同,字串比對正確,但是數字轉字串比對卻是反的

 

其實string.Compare是正確的,是我想錯了

因為數字轉字串用string.Compare比較就不對了

數字就該用數字的比對,而不是用字串

 

反推就是我沒有認清數字

從DB直接取值後,就當字串處理

結果當然不對

 

結論

在程式中,是數字就用數字判斷

字串才字串判斷

DB存檔時,如果是數字型別也要用數字型態

 

只是如果遇到要同時存字串或數字時

程式也要做不同型別來處理

別字串用到底

 

 

自我LV~