字符串比较大小,CompareTo来搞定!
2013-05-16 16:17
190 查看
很简单的例子,在Sql中我么可以轻松的实现字符串的比较,但是我们在Linq,Lambda中似乎没有。其实不然,我们可以用CompareTo来实现!
比如下面的SQL例子:
但是我们如何在C#中去实现了,我也想了很久,平时没比较过字符串,本人可能也比较菜,还是问了问,组长,它告诉我可以比较的,用CompareTo就可以。
错误一:测试了一下,上面的代码会报一个错误。
错误如下,我猜测这个错误的原因可能是 form["endCardNum"]放在Linq中,测试的它值还没有出来:
看到此错误,你可能认为是toString()的原因,其实不然,去掉toString()还是会报一个错误,因为Linq不支持ToString()函数。
i.CardNum.CompareTo(form["endCardNum"])也会报错,我猜测可能是 form["endCardNum"]测试的它还不是一个值,还得调用内部方法get_Item去获得,而Linq只能与定值进行比较。所以先要转成值,string sCardNum = form["startCardNum"];
i.CardNum.CompareTo(value(TsingDa.YiBa.Background.Controllers.Card_KaoshiController+<>c__DisplayClass2).form.get_Item("startCardNum")) >= 0
错误二:错误如下:
解决方法如下,由本人亲测,最终实现了想要的答案:
比如下面的SQL例子:
但是我们如何在C#中去实现了,我也想了很久,平时没比较过字符串,本人可能也比较菜,还是问了问,组长,它告诉我可以比较的,用CompareTo就可以。
PredicateList<Card_Kaoshi> predict = new PredicateList<Card_Kaoshi>(); if (string.IsNullOrEmpty(form["startCardNum"])) { predict.Add(i => i.CardNum.CompareTo(form["startCardNum"].toString()) >= 0); } if (!string.IsNullOrEmpty(form["endCardNum"])) { predict.Add(i => i.CardNum.CompareTo(form["endCardNum"].toString()) <= 0); }
错误一:测试了一下,上面的代码会报一个错误。
错误如下,我猜测这个错误的原因可能是 form["endCardNum"]放在Linq中,测试的它值还没有出来:
“LINQ to Entities 不识别方法"System.String ToString()",因此该方法无法转换为存储表达式。”
看到此错误,你可能认为是toString()的原因,其实不然,去掉toString()还是会报一个错误,因为Linq不支持ToString()函数。
i.CardNum.CompareTo(form["endCardNum"])也会报错,我猜测可能是 form["endCardNum"]测试的它还不是一个值,还得调用内部方法get_Item去获得,而Linq只能与定值进行比较。所以先要转成值,string sCardNum = form["startCardNum"];
i.CardNum.CompareTo(value(TsingDa.YiBa.Background.Controllers.Card_KaoshiController+<>c__DisplayClass2).form.get_Item("startCardNum")) >= 0
错误二:错误如下:
LINQ to Entities 不识别方法“System.String get_Item(System.String)”,因此该方法无法转换为存储表达式。
解决方法如下,由本人亲测,最终实现了想要的答案:
PredicateList<Card_Kaoshi> predict = new PredicateList<Card_Kaoshi>(); if (!string.IsNullOrEmpty(form["startCardNum"])) { string sCardNum = form["startCardNum"]; predict.Add(i => i.CardNum.CompareTo(sCardNum) >= 0); //i => i.CardNum.CompareTo(sCardNum) >= 这句话就相当于 cardnum >= sCardNum } if (!string.IsNullOrEmpty(form["endCardNum"])) { string eCardNum = form["startCardNum"]; predict.Add(i => i.CardNum.CompareTo(eCardNum) <= 0); //i => i.CardNum.CompareTo(eCardNum) <= 0 这句话就相当于 cardnum <= eCardNum }
相关文章推荐
- java字符串比较大小compareTo方法
- java简单的字符串大小比较——compareTo()方法
- java中比较字符串的大小(compareTo方法的使用)
- java简单的字符串大小比较——compareTo()方法
- java中的简单的字符串大小比较方法——compareto方法的详细介绍
- 使用字符串比较两个时间的大小
- php实现比较两个字符串日期大小的方法
- 关于不等长字符串的大小比较
- Oracle 字符串比较大小
- sqlserver2000中字符串类型的日期如何比较大小
- 编写函数,比较两个字符串的大小。
- [转]JavaScript 数字与字符串 比较大小
- (c语言)比较三个字符串的大小
- NYOJ 73 比大小【字符串比较】
- Shell脚本 字符串大小比较 字符串是否相等比较 字符串是否为空判断
- 百练 2721 忽略大小写比较字符串大小
- JavaScript字符串转日期并比较大小
- javascript可以直接比较时间字符串的大小
- 字符串的大小比较
- 指针做形参比较字符串的大小、