我剛剛在LINQ方法鏈中遇到了意外賦值表達式。這導致在foreach循環中使用的枚舉器(IEnumerable)永遠不會進入循環塊,而是遍歷所需的集合項。下面是用於創建迭代器中的故障的表達的一個簡化的例子:C#LINQ方法鏈中賦值語句的編譯器警告?
itemCollection.Where(theItem => theItem.status = false);
顯然,這是比較容易抓到用這樣的簡單的LINQ方法鏈,但在更復雜的情況,特別是那些涉及多個迭代或迭代由複雜的課程提供服務,它可能是一個真正的時間浪費追逐錯誤。是否有一個Visual Studio設置標記LINQ方法鏈中的賦值?
簡單的解決方法:從不比較'false'(和'true'),使用'theItem =>!theItem.status'(和'theItem => theItem.status')。 – svick 2013-02-21 00:32:07
它編譯?你不提供Func,因爲你沒有返回布爾值... –
2013-02-21 01:52:58
@LuisFilipe賦值返回賦值,所以lambda * *返回'bool'。 – svick 2013-02-21 01:55:40