Linq Generic OrderBy селектор - PullRequest
       14

Linq Generic OrderBy селектор

0 голосов
/ 16 декабря 2010

Я использую шаблон репозитория в приложении 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) например.

Заранее спасибо за любые идеи

1 Ответ

0 голосов
/ 16 декабря 2010

Я решил пойти с передачей строки и созданием выражения из нее

...