我知道我不能将带有'null'值的可空int转换为非可空的。
int? v = null;
int w = (int)v;
所以我开始使用null检查制作我的where子句。但是现在我看到它似乎仍然有效,即使没有它,这怎么可能?
我知道我有很多LogEmneId
在数据库中为空。
foreach (var logMaaler in ctx.LogMaalers.Where(lm =>
// (lm.LogEmneId != null && logEmner.Contains((short)lm.LogEmneId))
logEmner.Contains((short)lm.LogEmneId)
))
{
}
LinQ-to-entity语句是否被重写为为我处理空检查的sql查询?
答案 0 :(得分:3)
LinQ-to-entity语句是否被重写为为我处理空检查的sql查询?
有点儿。 Contains
在SQL查询中转换为IN
子句,可以正常使用NULL
值。请考虑以下查询:
SELECT *
FROM Table
WHERE Id IN (1,2,3,4,5,6,7)
当NULL
列中有Id
行时,它会正常工作。这就是这里发生的事情。