0

我在一个项目中使用 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 创建一个计算属性,该属性将在 db 服务器上以可搜索的方式计算?

4

1 回答 1

0

在这一点上,这似乎是不可能的。http://www.telerik.com/community/forums/orm/linq-questions/dynamic-query-with-extended-field.aspx

于 2013-03-08T14:55:27.337 回答