以下陳述句中的區別是什么?
var results = db.Orders.Where(x => x.Status == Status.Yes ||x.Status == Status.No)
并且
var results = db.Orders.Where(x => x.Status == Status.Yes | x.Status == Status.No)
并且
var results = db.Orders.Where(x => x.Status == Status.Yes) .Where(x => x.Status == Status.No)
它們應該產生相同的相同的結果嗎?
關于執行速度,它們是否相等?
(其中Status是一個列舉)
uj5u.com熱心網友回復:
我在.NET 5和最新的EF上與你的馬匹賽跑。我假設Yes=1,No=2
var results = db.Orders.Where(x => x.Status == Status.Yes || x.Status == Status.No)
變成了
SELECT ...
FROM Orders
WHERE Status IN (1, 2)
var results = db.Orders.Where(x => x.Status == Status.Yes | x.Status == Status.No)
變成了
SELECT ...
FROM Orders
在哪里?
()
CASE WHEN Status = 1 THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END
|
CASE WHEN Status = 2 THEN CAST(1) number">1 AS bit) ELSE CAST(0 AS bit) END
) = CAST(1 AS bit)
var results = db.Orders.Where(x => x.Status == Status.Yes).Where(x => x.Status == Status.No)
變成了
SELECT ...
FROM Orders
WHERE (Status = 1 AND Status = 2)
(這顯然是無稽之談,但不是EF的錯。)
隨你怎么想吧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/327605.html
標籤:
