Я хотел бы сделать что-то подобное (ниже), но не уверен, есть ли для этого формальный/оптимизированный синтаксис?
.Orderby(i => i.Value1)
.Take("Bottom 100 & Top 100")
.Orderby(i => i.Value2);
в основном, я хочу отсортировать по одной переменной, затем взять первые 100 и нижние 100, а затем отсортировать эти результаты по другой переменной.
Какие-либо предложения?
list
как IQueryable для БД, который возвращает тысячи расширяемых записей - я почти уверен, что Reverse будет читать целую кучу записей из БД для работы. Я думаю, чтоlist.Skip(list.Count() - 100).Take(100)
будет лучше вместоreverse ... take
, даже с дополнительным запросом кCount
03.08.2014OrderBy
не является исключением), а затемReverse
придется буферизовать всю последовательность, которая занимает столько же памяти как просто преобразование в список (ToList
). Таким образом, вы получаете худшее из всех миров, памяти и времени работы. Было бы лучше просто использовать два сорта, одинOrderBy
иOrderByDescending
. 04.08.2014