lamebda 查询后必须要select ,不然不出来数据。
数据库查询
Linq 查询
在C#中,存在一种特殊的类型,Nullable的类型,这个类型可以为空的状态。
在数据库中,如果类型允许为空,就会有NULL的字段
在Lamda查询表达式中,对于数据库中为空的情况也要特殊的注意一下
在SQL的查询中,如果存在为空的字段,例如
------------------------------------
table Test
------------------------------------
------------------------------------
我们要查询 不为真的情况,我们用
此时查询的结果是只有一条
------------------------------------
------------------------------------
如果按照正常的逻辑来考虑,应该是2条的,如下
------------------------------------
------------------------------------
但是由于Null字段的特殊性,在查询的时候为
------------------------------------
------------------------------------
这条记录,因此我们要查询这样的数据,就不能够用不等于进行查询,要用或者来进行查询
在Linq的查询中同理,我们用Lamd表达式查询,如果为三态的情况,我们想要其中的另两个结果,此时也要用or来进行连接
如:
Tests.where(p=>p.B!=true) 这样查询时不会得到正确的结果的,原因很简单,就是因为Null的字段不会自动翻译
因此正确的查询结果是
Tests.where(p=>p.B==false||p.B==null)
此时查询就为正确的结果,当然我们可以利用这种特性,查询的时候可以查询所有的有效数据,避免掉那些为空的数据。
OK,关于Lambda查询和SQL查询 字段为空(NULL)的情况要注意了.