Я фильтрую IQueryable для возврата всех объектов, у которых есть поле UserId (nullable int), установленное в null. Запрос генерирует неправильный SQL и, таким образом, сбой - это утверждение следующим образом -
var filtered = certificates.Where(c => !c.UserId.HasValue).Select(c => c.SubjectName);
а сгенерированный 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
Любая идея WTF продолжается? Идея проста: я просто хочу вернуть все строки, где поле UserId ложно. UserId имеет значение NULL, и запрашиваемая таблица имеет три строки, которые соответствуют описанному условию, однако запрос LINQ возвращает 0.
Спасибо!