C# 如何在选择期间计算实体类中的一个属性?
我的表C# 如何在选择期间计算实体类中的一个属性?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我的表Persons有一个名为DOB的出生日期列 在dbml文件中,我添加了一个名为Age的附加single属性 在Linq查询中,如何在Age中返回从今天开始计算的年龄adDOB?也就是说,我如何实现下面的虚构代码: DataClasses1 db = new DataClasses1(); var pp = from p in db.Persons select new Person() {
Persons
有一个名为DOB
的出生日期列
在dbml文件中,我添加了一个名为Age
的附加single
属性
在Linq查询中,如何在Age
中返回从今天开始计算的年龄adDOB
?也就是说,我如何实现下面的虚构代码:
DataClasses1 db = new DataClasses1();
var pp = from p in db.Persons
select new Person()
{
Name = p.Name, // ... clone all the other properties ...
Age = (DateTime.Today-p.DOB).Days/365
}
有没有其他方法可以达到同样的目标
谢谢。您可以将年龄计算逻辑放入
age
属性,并从数据库中仅下载出生日期:
public int Age
{
get {
DateTime today = DateTime.Today;
int age = today.Year - DOB.Year;
if (DOB > today.AddYears(-age)) age--;
return age;
}
}
如果您想在服务器端计算年龄(根据问题标签,这是一个LINQ到SQL代码):
from p in db.Persons
let age = SqlMethods.DateDiffYear(p.DOB, DateTime.Today)
select new Person {
Name = p.Name,
Age = SqlMethods.DateDiffDay(DateTime.Today.AddYears(-age), p.DOB) > 0 ?
age - 1 : age
}