Question

I'm using Telerik OpenAccess and SQL Server on a project and I need to be able to search by what someone's age will be on a certain date. The problem that I am running into is that the person's date of birth is stored in one table and the date to compare to is in another table, which prevents me from using a computed column. They are, however, joined together so that I can calculate the age by creating my own non-persistent property in the partial class like so:

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 { }
    }
}

Please ignore how bad the tables are set up, it's something that I inherited and can't change at this point. The problem with this approach is that the property is not available to search on with Linq. I know that I could create a view that would do this for me, but I would much rather not have to maintain a view just for this. Is there any way at all to create a calculated property through Telerik that would be calculated on the db server in such a way as to be searchable?

Was it helpful?
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top