使用:實體框架4.3.1,MVC 4空VS默認設置爲空 - 讓不同的結果
示例數據庫記錄(例如):
Id Height 1 null 2 2.1
爲什麼第一條語句會帶回零結果:
decimal? scannedItemHeight = default(decimal?);
(from st in Stocks
where st.Height == scannedItemHeight
select st.Id).ToList();
但是,此語句返回記錄ID 1:
(from st in Stocks
where st.Height == null
select st.Id).ToList();
如果scannedItemHeight爲空,我只想匹配高度爲零的值。
我只想要回的第一條記錄,ID爲1
UPDATE 我最終使用:
st.Height == scannedItemHeight || (scannedItemHeight == null && st.Height == null)
日誌中生成實際的SQL語句,看看是否有區別。 HTTP://計算器。com/questions/16880687/how-can-i-log-the-generated-sql-from-dbcontext-savechanges-in-my- –
你是否確實擁有與其他條件匹配的非空高度的項目?否則,這兩種方法的結果在_this_中是相同的(因爲Jon的方法只會返回Height爲空的項目,而我的方法只是返回所有項目)。理解這些方法之間的區別非常重要。因爲我不知道如果參數爲null,所以需要使用null Height匹配項目 - 所以使用Jon的方法。 – Evk
@Evk Doh!我認爲你的權利,我選擇了高度的例子,並沒有檢查其他給定的過濾參數(寬度,長度,表),所有的結果有一個空的高度,讓我重新測試並找回你,但是的,這將解釋一切。 –