我正在尝试解决可能更像是LINQ问题的EF查询。使用包含在这里的内部(使用linqpad进行测试)。
下面的查询我得到一个空结果,即使我知道retval
有我感兴趣的结果。
查询#1
var retval = (from a in DeliveryOrders
join b in CustomerOrders on a.CustomerOrderID equals b.ID
where b.OrderDate > DateTime.Now.AddMonths(-3)
select a).ToList();
var retval2 = retval.Where (r => r.DeliveryOrderNo.Contains("hd")).ToList();
retval2.Dump();
如果我像第一个查询中那样使用where,我会得到我期望的结果。
查询#2
var retval = (from a in DeliveryOrders
join b in CustomerOrders on a.CustomerOrderID equals b.ID
where b.OrderDate > DateTime.Now.AddMonths(-3)
&& a.DeliveryOrderNo.Contains("hd")
select a).ToList();
为什么第一个结果返回空,但第二个结果返回我的期望? 在尝试了一些不同的事情后,似乎是一个区分大小写的问题。
我是否正确地说在查询#1中,contains方法用于.net集合,而对于查询#2,contains方法被转换为SQL,这样可以解释区分大小写的区别?
[更新] 我现在可以确认,它是一个案例问题,因为一个被转换为sql,但另一个是.net,它对字符串区分大小写。