关于linq语句与sql语句查询条件==null处理的奇妙现象

正常情况下

在sql语句中我们要查找一个字段为null的数据,我们通常使用的方法是

select * from 表名   where 字段名 is null

在linq语句中我们可以直接使用

表.Where(m=>m.列 == null)

//转换后的sql语句便是
SELECT  字段……
FROM 表 AS [t0]
WHERE [t0].列 IS NULL

特殊情况下

我们像如下这样写linq查询

    int? a = null;
    
    表.Where(m=>m.列 == a);
// 转换成的sql语句便是这样了

DECLARE @p0 Int = null
SELECT 字段……
FROM 表 AS [t0]
WHERE [t0].列 = @p0

这样写的sql是查找不出来任何数据的。那么我们这样写就可以了。会根据a的不同值转换成不同的sql语句。

     var query = a.HasValue? 表.Where(m=>m.列 == a)
     :表.Where(m=>m.列 == null) ;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MYSQL轻松学

mysql left join、right join、inner join用法分析

四种联接 left join(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中...

3987
来自专栏calmound

SQL语句知识点

PERSON表 NUMBER NAME SEX AGE 1 THERON male 19 2 JACK male 20 3 LUCY fema...

3376
来自专栏技术碎碎念

T-SQL 查询、修改数据表

T-SQL修改表数据 INSERT语句 语法: INSERT [TOP(expression) [PERCENT]] [INTO] ...

4724
来自专栏WebDeveloper

Mysql数据库应用--索引(二)

CREATE TABLE table_name [col_name data_type] [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KE...

1183
来自专栏calmound

操作数据表中的记录

插入记录   语法:INSERT [INTO] [(tbl_name,...)] {VALUE|VALUE} ({expr|DEFAULT},...),(......

3377
来自专栏有趣的django

15.MySQL(三) 索引类型

索引类型 先创建表 mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), ...

33212
来自专栏james大数据架构

SQL常用数据库结构升级语句

修改视图 --SQL Server 2005 GO IF EXISTS (SELECT * FROM sys.views WHERE object_id ...

2259
来自专栏Java架构师历程

Mysql常用查询语句

一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!>,!<,=>,=<

1102
来自专栏个人随笔

MySQL基本语句

创建表 如果是关键字  那么使用反引号  `` esc下面的键 create  table  [if  not  exists] 表名(    字段1  数据类...

3757
来自专栏撸码那些事

MySQL——通过EXPLAIN分析SQL的执行计划

在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。

1142

扫码关注云+社区

领取腾讯云代金券