2015-01-12 2 views
0

У меня проблема в методе Linq-Where. Я получаю NullReferenceException в пункте где, что не должно произойти, потому что C# следует использовать короткое замыкание и второй операции не hould быть выполнены:Короткое замыкание в Linq-Where

enter image description here

Если Item имеет нулевое значение, Item.State == ... не следует называть, потому что условие уже верно (короткое замыкание).

Но, похоже, что короткое замыкание в этом случае не работает.

Кто-нибудь еще и решил эту проблему? Спасибо!

Edit: В конце концов, 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)); 

просто чтобы посмотреть, работает ли он.

Смежные вопросы