В LINQ to SQL я бы ожидал, что эти два запроса будут одинаковыми - по крайней мере, они должны иметь один и тот же план запросов, даже если не точно такой же SQL.
В LINQ toОбъекты, они будут вести себя совсем по-другому.Представьте, что у вас был миллион пользователей, но только у двух из них были имена пользователей, начинающиеся с "t".в первой форме вы будете фильтровать, а затем сортировать этих двух пользователей ... во второй форме нужно будет отсортировать все до начала фильтрации.
Конечно, естьв других ситуациях порядок также имеет значение - в частности, если у вас есть Select
на полпути вниз, а затем предложение Where
, вы будете фильтровать разные вещи.Представьте себе:
var query = Enumerable.Range(-20, 30)
.Select(x => -x)
.Where(x => x > 5);
против
var query = Enumerable.Range(-20, 30)
.Where(x => x > 5)
.Select(x => -x);
В первом примере результаты будут "20, 19, 18, ... 6", тогда как во втором запросе результаты будутбыть "-6, -7, -8, -9, -10".Сильно отличается!