對於過長字串的大小比對

次元宅的我發表於2018-06-26

嘛  事情發生是這樣的 由於生成卡號太長(900038080205489 這種)  又要判斷某卡號位於某個區間 再去判斷機構
一開始很天真的直接按照慣性思維來寫

query = query.Where(x=>x.Code>=MinCode && x.Code<MaxCode);

結果出問題了 2333

因為這裡我把卡號當做int型別的去做大小判斷結果報錯

按理來說應該用long型別 6位數以下的兩者沒區別 但是超過6位就不行了

資料範圍不一樣
int -2^31~2^31-1
long long -2^63~^63-1

所以後期處理的辦法是這樣的

query = query.Where(x => x.Code.CompareTo(EndCode) >= 0 && x.Code.CompareTo(MaxCode) <= 0);

這裡CompareTo是字串的比較方法 

當a>b的時候a.CompareTo(b) == 1

當a=b的時候a.CompareTo(b) == 0

當a<b的時候a.CompareTo(b) == -1

相關文章