Я пытаюсь ORDER BY
некоторые поля, но SELECT DISTINCT
другим полем, и после этого применить Skip & Take
Код:
var result = entities.OrderBy(e => e.OrderField)
.Select(e => e.SelectField)
.Distinct()
.Skip(skip)
.Take(take)
.ToArray();
Но я получаю это исключение:
System.NotSupportedException: «Метод« Пропустить »поддерживается только для отсортированного ввода в LINQ to Entities. Метод 'OrderBy' должен быть вызван перед методом 'Пропустить'. '
Я понимаю причину (набор изменяется между упорядочением и пропуском), но я могу обойти эту проблему без запрашивать базу данных более одного раза (редактировать: и не получать больше объектов, чем предполагалось)?
РЕДАКТИРОВАТЬ: Я не думаю, что есть оптимальное решение для этого, поэтому я сделал Я получил значения, а затем разбил их на страницы. * вздох *
var result = entities.OrderBy(e => e.OrderField)
.Select(e => e.SelectField)
.Distinct()
.ToArray()
.Skip(skip)
.Take(take)
.ToArray();