EDIT: LINQ до об'єктів не поводиться так, як я очікував. Можливо, вас зацікавить повідомлення в блозі, про який я щойно писав ...
Вони відрізняються з точки зору того, як буде називатися - перший еквівалентний:
Collection.Where(x => x.Age == 10)
.Where(x => x.Name == "Fido")
.Where(x => x.Fat == true)
коли останній еквівалентний:
Collection.Where(x => x.Age == 10 &&
x.Name == "Fido" &&
x.Fat == true)
Тепер, яка різниця, що насправді має значення, залежить від того, наскільки Where
вони викликаються. Якщо це постачальник, що базується на SQL, я очікую, що вони в кінцевому підсумку створять один і той же SQL. Якщо він знаходиться в LINQ to Objects, другий матиме менший рівень непрямості (замість чотирьох будуть задіяні два ітератори). Чи важливі ці рівні опосередкованості щодо швидкості - це вже інше питання.
Як правило, я б використовував декілька where
застережень, якщо їм здається, що вони представляють значно різні умови (наприклад, це стосується однієї частини об'єкта, а інша - повністю окрема частина) та один where
пункт, коли різні умови тісно пов'язані (наприклад, певне значення більше мінімуму і менше максимуму). В основному варто враховувати читабельність перед будь-якою незначною різницею у виконанні.
Fat
властивість? Це звичайне значення.