【发布时间】:2017-05-29 10:20:00
【问题描述】:
我有一张桌子,即 StudentInfo
表:DbSet<StudentInfo>
ID Name
_____________________
1 Ram
2 Kumar
我的 C# 代码是
using(var db = new Entities()) {
Expression<Func<StudentInfo,object>> sortColumn = i => i.ID;
IQueryable<StudentInfo> qryStudent = db.StudentInfos.Where(i => true)
.OrderBy(sortColumn);
}
抛出异常
“无法将类型 'System.Int32' 转换为类型 'System.Object'。LINQ to Entities 仅支持转换 EDM 基元或枚举类型。”
如果我在表达式中修改 i => i.ID.ToString() 之类的代码,它的工作原理
using(var db = new Entities()) {
Expression<Func<StudentInfo,object>> sortColumn = i => i.ID.ToString();
IQueryable<StudentInfo> qryStudent = db.StudentInfos.Where(i => true)
.OrderBy(sortColumn);
}
如何以正确的方式解决此问题。
我需要一个通用的解决方案,表达式应该是 Expression<Func<StudentInfo,dynamic>> 像这样。两者都应该匹配
switch(sortKey) {
case "ID"
sortColumn = i => i.ID;
break;
case "Name"
sortColumn = i => i.Name;
break;
}
请帮助我...
【问题讨论】:
-
把
Expression<Func<StudentInfo,object>>改成Expression<Func<StudentInfo,int>>能用吗?
标签: c# linq lambda linq-to-sql linq-to-entities