我才意识到,当我要求这个为什么LINQ的子串()忽略空值
Orders.Where(y => y.Sub_Item_Id.Substring(0, 10) != y.Sub_Item_Site_Id.Substring(0, 10))
查询忽略可能在y.Sub_Item_Site_Id
存在我所有的空值。所以当我在Sub_Item_Id中有一个值并且在Sub_Item_Site_Id中为null时,查询并不认为这是!=
。
为什么?
我还测试了相同的查询与SQL
select
*
from
orders as o
where
LEFT(o.sub_item_id, 10) <> LEFT(o.sub_item_site_id, 10)
我也得到了相同的结果。我有我所有不同的值,但不是当我在o.sub_item_id中有值,在o.sub_item_site_id中为null时。
您能否解释SQL和Linq如何以及为何如此工作。
不好意思,但是如果系统产生异常并且这些异常由系统本身处理,结果是系统忽略了一些东西。好的,好的。因此,Linq查询会忽略这些行,因为您认为系统会生成异常。那么SQL查询呢?同样,LEFT()生成异常? –