OrderBy с Dynamic Linq и отношения один-ко-многим в EF - PullRequest
0 голосов
/ 19 января 2011

Я хотел бы реализовать модуль для фильтрации и подкачки страниц.Я понимаю, что для успеха мне пришлось использовать Dynamic Linq или Reflection, поэтому я начал пытаться заставить его работать ... но поскольку поле, содержащее текст, который нужно отфильтровать в EF отношения один ко многим, не нравится.

Этот код работает нормально .. но статично:

List<Domain.Entities.Action> actions = db.Actions.Include("Menus").Include("ActionDetails")
                                                 .Where(x => x.ActionDetails.Any(y => y.Language.Culture == _currentCulture))
                                                 .OrderBy(y => y.ActionDetails.Select(z => z.Title).Max()).Skip((pager.Index - 1) * pager.Take).Take(pager.Take)
                                                 .ToList();

Я хочу

.Выбрать (z => z.Title)

Динамичный ..

Может ли кто-нибудь мне помочь .. Я много чего пробую .. но безуспешно

Джу.

1 Ответ

1 голос
/ 24 июня 2011

Для этого вам нужно передать параметр Funt<Action, TResultType> searchCriteria

Не уверен, какова подпись вашего метода, но это сработает, если вы планируете вернуть List<string>

public List<string> PerformSearch(Func<Action, string> selectCriteria)
{

  return db.Actions.Include("Menus").Include("ActionDetails")
      .Where(x => x.ActionDetails.Any(y => y.Language.Culture == _currentCulture))
      .OrderBy(y => y.ActionDetails.Select(**selectCriteria**).Max())
      .Skip((pager.Index - 1) * pager.Take).Take(pager.Take)
      .ToList();
}
...