我的表Project
列ProjectRegNumber
。从这一列可以得到年份(如果列值是855589/14年是2014年(20 +最后两个数字),则为fe。我有方法GetYearFromRcn
(参数注册号,返回值年)。我在GridView
中显示所有项目,其中一列是年份 - 这很好。
但现在我想获得一年订购的记录(从列ProjectRegNumber
计算)。这是可能的,还是我必须在表格中添加另一个年份值的列?
我在没有排序的情况下获取数据的方法如下所示:
public static List<Project> GetProjects()
{
using (var ctx = new NSMASEntities())
{
return ctx.Project
.ToList();
}
}
在这里,我想添加.OrderBy(project => GetYearFromRcn(project.ProjectRegNumber))
答案 0 :(得分:2)
Linq无法将您的GetYearFromRcn
方法转换为linq表达式。
您需要先执行它。
return ctx.Project
.ToList()
.OrderBy(p => GetYearFromRcn(p.ProjectRegNumber))
.ToList();
或者像这样使用DbFunctions.Right。
return ctx.Project
.OrderBy(p => "20" + DbFunctions.Right("00" + p.ProjectRegNumber, 2))
.ToList();