linq to entity之字符串比较

本文介绍在使用Linq时如何解决字符串比较问题,利用CompareTo方法实现类似SQL的字符串区间查询,提供了一种在EF中处理字符串比较的有效方法。

字符串比较在Sql里可以直接写命令,在EF中使用Linq语句不行,网上查了下发现也有人碰到此问题记录下

有涉及到字符串比较问题。linq to entity 是不支持像sql语句中的两个字符串的比较的

比如sql:select * from  aaa where aa.name>'A001' and aa.name<'B001'

遇到这个情况如何处理呢

在写linq的时候 开始的想法就这样

using (XTDBEntities edm=new XTDBEntities())
{
return edm.XT_Card.Where(s => s.CardNum >= startCode && s.CardNum <= endCode).Count();
}

但是聪明的你会发现这个编译是不能通过的。那怎么办呢

 通过简单的 “点”发现 居然有个CompareTo这个扩展方法 那我们看看他的定义

public int CompareTo(string strB)
    System.String 的成员

摘要:
将此实例与指定的 System.String 对象进行比较,并指示此实例在排序顺序中是位于指定的 System.String 之前、之后还是与其出现在同一位置。

参数:
strB: System.String。

返回值:
一个 32 位有符号整数,该整数指示此实例在排序顺序中是位于 value 参数之前、之后还是与其出现在同一位置。 值 条件 小于零 此实例位于 strB 之前。 零 此实例在排序顺序中的位置与 strB 相同。 大于零 此实例位于 strB 之后。 - 或 - strB 为 null。

有了这个就好办多了

那我们就将上面的那句话改造一下

return edm.XT_Card.Count(s => s.CardNum.CompareTo(startCode) >= 0 && s.CardNum.CompareTo(endCode) <= 0);

这样就达到了sql中的大于,小于。以及使用的between...and的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值