Я использую шаблон репозитория в приложении asp.net mvc (v3) и EntityFramework (v4).Я хотел бы добавить в хранилище функции подкачки страниц.У меня есть следующий пример кода:
public PagedResult<T> GetPaged(int offset = 0, int limit = PagedResult<T>.NoLimit, Expression<Func<T, bool>> predicate = null)
{
var res = BaseQ.Where(_predicate);//.Skip(offset);
if (predicate != null)
res = res.Where(predicate);
res = res.Skip(offset);
if (limit != PagedResult<T>.NoLimit)
{
res = res.Take(limit);
}
return new PagedResult<T>(res, res.Count(), offset, limit);
}
Однако это не будет работать, потому что платформа Entity выдает исключение, которое я должен вызвать OrderBy
до Skip
.Мне интересно, как я могу реализовать это в общем виде, чтобы порядок по выражению был подключен извне.Я тогда передал бы это как параметр.Возможно, есть и другой способ обойти эту проблему.
[EDIT] Я обнаружил, что это можно сделать, передав имя свойства и создав из него выражение., но я бы хотел использовать его так же, как я использую его в OrderBy.Так что просто введите (c=>c.ID)
например.
Заранее спасибо за любые идеи