Когда я делаю это:Расхождение в C# LINQ результаты
currentPage = metadataResponse.ApplicationType.Pages.Find(
page => page.SortOrder == ++currentPage.SortOrder);
Значение currentPage
равно нулю.
Но та же логика, когда я присвоить значение приращения целочисленной переменной, а затем попытаться получить currentPage
int sortOrder = ++currentPage.SortOrder;
currentPage = metadataResponse.ApplicationType.Pages.Find(
page => page.SortOrder == sortOrder);
currentPage
получает заселена.
У кого-нибудь есть хороший ответ, почему кто-то работает, а другой нет?
Они не эквивалентны, просто. По-видимому, лямбда оценивается несколько раз (я не знаю, что такое метод «Найти()») и несколько раз меняет порядок сортировки текущей страницы. –
Избегайте лямбда-выражений с побочными эффектами в запросах. –