我正在过滤IQueryable以返回将UserId(可空int)字段设置为null的所有实体.查询生成错误的SQL,因此失败 - 语句如下 -
var filtered = certificates.Where(c => !c.UserId.HasValue).Select(c => c.SubjectName);
Run Code Online (Sandbox Code Playgroud)
并生成的SQL是 -
SELECT
CAST(NULL AS varchar(1)) AS [C1],
CAST(NULL AS int) AS [C2],
CAST(NULL AS datetime2) AS [C3],
CAST(NULL AS datetime2) AS [C4],
CAST(NULL AS bit) AS [C5],
CAST(NULL AS datetime2) AS [C6],
CAST(NULL AS int) AS [C7]
FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
WHERE 1 = 0
Run Code Online (Sandbox Code Playgroud)
任何想法WTF都在继续吗?这个想法很简单我只想返回字段UserId为false的所有行.UserId可以为空,被查询的表有三行与描述的条件匹配,但LINQ查询返回0.
谢谢!