OrderBy with Dynamic Linq和EF中的一对多关系

时间:2011-01-19 05:44:24

标签: c# linq linq-to-sql linq-to-entities dynamic-linq

我想实现一个用于过滤和分页的模块。我明白要成功我必须使用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 =&gt; z.Title)

动态..

有人可以帮助我..我尝试了很多东西......但没有成功

1 个答案:

答案 0 :(得分:1)

要完成此操作,您需要传递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();
}