是否可以按从列中计算的值对记录进行排序?
本文关键字:记录 排序 计算 是否 | 更新日期: 2023-09-27 18:17:55
我有一个表Project
,列ProjectRegNumber
。从这个列中可以得到年份(例如,如果列值为855589/14,年份是2014(20 +最后两个数字)。我有方法GetYearFromRcn
这个(参数reg)。数字,返回值(年)。我在GridView
中显示所有项目,其中一列是年份-这工作得很好。
但是现在我想获得按年份排序的记录(从列ProjectRegNumber
计算)。这是可能的,或者我必须添加另一个列与年值到我的表?
不排序获取数据的方法如下:
public static List<Project> GetProjects()
{
using (var ctx = new NSMASEntities())
{
return ctx.Project
.ToList();
}
}
这里我想添加.OrderBy(project => GetYearFromRcn(project.ProjectRegNumber))
Linq将无法将GetYearFromRcn
方法转换为Linq表达式。
你需要先执行它。
return ctx.Project
.ToList()
.OrderBy(p => GetYearFromRcn(p.ProjectRegNumber))
.ToList();
或者使用DbFunctions。右像这样
return ctx.Project
.OrderBy(p => "20" + DbFunctions.Right("00" + p.ProjectRegNumber, 2))
.ToList();