【问题标题】:How to use Dynamic LINQ in MVC4?如何在 MVC4 中使用动态 LINQ?
【发布时间】:2014-02-25 05:35:34
【问题描述】:

这是我的 MVC4 应用程序“视图”中的默认操作。

public ActionResult Index(string sort = "R_ResDate", 
                          string sortdir = "DESC", 
                          int page = 1)
{
    List<Result> results = modRes.Results.ToList();

    var results = from r in results
                  orderby r.R_ResultDate descending
                  select r;

    return View(results);
}

modRes 是一个模型类,

我想在动态 linq 中使用排序列、sortDir 和页面参数来导出结果。

任何帮助将不胜感激。

【问题讨论】:

标签: c# linq asp.net-mvc-4 dynamic-linq


【解决方案1】:

您可以使用此代码对数据进行分页和排序:

var p = Expression.Parameter(typeof(Model));
var sortByFunc = Expression.Lambda<Func<Model, object>>(Expression.TypeAs(Expression.Property(p, sortByKey), typeof(object)), p).Compile();

var items = from r in modRes.Results
            orderby r.R_ResultDate descending
            select r;
var orderedItems = sortByAsc 
      ? items.OrderBy(sortByFunc) 
      : items.OrderByDescending(sortByFunc);
var results = orderedItems.Skip((pageIndex - 1) * pageSize).Take(pageSize);

return View(results);

另外,您不应该在modRes.Results 查询上调用ToList 方法,因为在这种情况下将加载所有数据,而应该只加载一页的数据。

【讨论】:

  • 我之前使用过 sortByFunc,但没有使用拳击。谢谢。
猜你喜欢
  • 2011-09-06
  • 2014-08-10
  • 2011-10-27
  • 2014-10-20
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
相关资源
最近更新 更多