2015-01-12 69 views
0

Linq-Where中的問題我有問題。我得到一個NullReferenceException在where子句中,這是不應該的,因爲C#應該使用短路和第2動作HOULD不會被執行:Linq-Where中的短路

enter image description here

如果Item爲null,Item.State == ...不應該叫,因爲條件已經成立(短路)。

但是看起來,這種情況下短路不起作用。

其他人有沒有解決過這個問題?謝謝!

編輯: 最後,connectionList不應該包含任何空值和沒有斷開的連接。

+1

你真的*想*結果列表中的空值? – Jamiec

+3

看起來像你想!=和&& –

+0

我想要空值,因爲我想從列表中刪除它們。 – BendEg

回答

0

這是數據庫查詢時常見的問題。也就是說,針對數據庫轉換短路行爲,不會像您期望的那樣工作。你可以閱讀更多關於這種行爲:The || (or) Operator in Linq with C#

你可以試試這個:

connectionList.RemoveRange(connectionList.Where(x => x==null)); 
connectionList.SaveChanges(); 
connectionList.RemoveRange(connectionList.Where(x => x.Item==BrokenState)); 

只是爲了看看它是否工作。