我正在项目中使用Telerik OpenAccess和SQL Server,我需要能够搜索某个人在某个特定日期的年龄。我遇到的问题是,该人的出生日期存储在一个表中,并且要比较的日期在另一个表中,这使我无法使用计算列。但是,它们连接在一起,以便我可以通过在部分类中创建我自己的非持久属性来计算年龄,如下所示:
public partial class Student
{
[Telerik.OpenAccess.Transient]
private int? _ageUponArrival;
public virtual int? AgeUponArrival
{
get
{
try
{
var dob = DateTime.Parse(this.StudentProfiles.First().Person.YearOfBirth);
var programStart = (DateTime)(this.StudentPrograms.First().ProgramStart);
this._ageUponArrival = programStart.Year - dob.Year;
if (dob > programStart.AddYears(-(int)(this._ageUponArrival)))
{
(this._ageUponArrival)--;
}
}
catch (Exception e)
{
this._ageUponArrival = null;
}
return _ageUponArrival;
}
set { }
}
}
请忽略表格的设置有多糟糕,这是我继承的内容,此时无法更改。这种方法的问题是该属性不能用Linq搜索。我知道我可以创建一个可以为我做这个的视图,但我宁愿不必为此维护一个视图。有没有办法通过Telerik创建一个计算属性,它将在数据库服务器上以可搜索的方式计算?
答案 0 :(得分:0)