簡體   English   中英

在LinQ-to-entity中的where子句中強制轉換為nullable,而不進行null檢查

[英]Casting a nullable in where clause in LinQ-to-entity without null-check

我知道我不能將具有'null'值的可為null的int強制轉換為不可為null的int。

int? v = null;
int w = (int)v;

因此,我首先對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查詢?

LinQ-to-entity語句是否被重寫為可為我處理空檢查的sql查詢?

的種類。 Contains轉換為SQL查詢中的IN子句,該子句在使用NULL值時效果很好。 考慮以下查詢:

SELECT *
FROM Table
WHERE Id IN (1,2,3,4,5,6,7)

當您在Id列中包含NULL的行時,它將正常工作。 而這正是這里發生的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM