【发布时间】:2020-02-27 09:43:26
【问题描述】:
当查询使用 LINQ 和 Lambda 表达式在 C# 中检查数据库表中存在的值时,我想忽略 null。
下面的行也在检查 null 。当它找到 null 时忽略它。
var nmcExist = db.AspNetUsers.Any(a => a.NMC_Number== model.NMC_Number);
【问题讨论】:
-
.Any(a => a.NMC_Number != null && a.NMC_Number == model.NMC_Number);? -
is checking null as well是什么意思?您实际使用的是哪个 ORM? LINQ 只是 ORM 将映射到查询的一种查询语言。不同的 ORM,甚至不同的 EF 版本都可能产生不同的 SQL 查询。在这种情况下,检查null的ONLY 方法是发出a.NMC_Number is @p1 or a.NMC_NUMBER IS Null。 EF 默认情况下不会这样做,但这种行为可以改变 -
所以,在 6.2之前,默认行为是不发出
IS NULL,由UseCSharpNullComparisonBehavior控制,即false由默认。这个changed in 6.2 和新的默认确实 生成IS NULL。 EF Core 还没有这个选项。那么哪个你使用的是哪个ORM,哪个版本? -
EF Core 选项是UseRelationalNulls。