有誰知道爲什麼這樣的邏輯:LINQ增加額外的邏輯WHERE子句
var t = _repo.Surveys
.Where(s => s.status &&
(s.regionid == null || s.regionid.Value.Equals(regionid)))
.ToList();
將構建該WHERE
條款?
WHERE ([Extent1].[status] = 1)
AND (([Extent1].[regionid] IS NULL) OR
(([Extent1].[regionid] = @p__linq__0) AND (NOT ([Extent1].[regionid] IS NULL OR @p__linq__0 IS NULL))) OR
(([Extent1].[regionid] IS NULL) AND (@p__linq__0 IS NULL)))'
,N'@p__linq__0 int',@p__linq__0=0
我希望它只會比較列是否爲空或者它是否具有我通過的值。
喜歡的東西:
WHERE status = 1 AND (regionid IS NULL OR regionid = 0),
例如。
看起來像一個EF自動生成的查詢。它「嘗試」優化 - 嘗試成爲關鍵詞......我假設在這種情況下,它正在查看一個「可空」屬性並進行相應的轉換。 – sgeddes
你真的讀過每一個比較嗎?它正在做你想做的,它只是更詳細的。 – Ellesedil
@Ellesedil感謝您的評論。我知道它確實有效......我只是在想如果有辦法讓它更清潔。 – Catinodeh