【发布时间】:2016-09-12 02:44:32
【问题描述】:
我必须实现排序。虽然我想通过不对下面的x.SlNo 那样的模型进行硬编码来做到这一点。
public ActionResult Index(string sortOrder, string sortDirection, int? itemsPerPage, int? page, string SearchString)
{
IPagedList<TransferBenefits> entityList = null;
sortOrder = String.IsNullOrEmpty(sortOrder) ? "SlNo" : sortOrder;
var propertyInfo = typeof(TransferBenefits).GetProperty(sortOrder);
var selectList = db.transferBenefits.OrderBy(x => propertyInfo.GetValue(x, null));
//selectList = db.transferBenefits.OrderBy(x => x.SlNo); --uncommenting this works.
entityList = selectList.ToPagedList(pageNumber: page ?? 1, pageSize: itemsPerPage ?? 10);
return View(entityList)
}
我在取消注释代码运行正常时收到此错误。
在 mscorlib.dll 中出现“System.NotSupportedException”类型的异常,但未在用户代码中处理
附加信息:LINQ to Entities 无法识别方法'System.Object GetValue(System.Object, System.Object[])' 方法,并且此方法无法转换为存储表达式。
【问题讨论】:
-
您应该切换到 Dynamic Linq,这是一种非常古老但仍然有效的方法。检查例如这个stackoverflow.com/questions/2728340/…
-
如果可能的话,我会很棒的 lamda 表达式。在使用任何库之前我必须获得许可。
-
动态 Linq 工作。谢谢维克托。如果可以用 lamda 来完成,那就太好了。
-
使用jquery数据表,简单易用,功能丰富
标签: c# linq lambda asp.net-mvc-5 pagedlist