这是我的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
是Model类,
我想在动态linq中使用sort列,sortDir和page参数来派生结果。
任何帮助都将不胜感激。
答案 0 :(得分:-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);
另外,你不应该在ToList
查询上调用modRes.Results
方法,因为在这种情况下,当只加载一页的数据时,将加载所有数据。