0
select AVG(DATEDIFF(yyyy, (p.BirthDay), GETDATE()))
from Person p
我试图将这个SQL查询转换为SQL查询。我的问题是AVG()和DATEDIFF()。我试图将LINQ上的这个SQL查询转换为SQL查询,但我有一些困难的Avg()和DateDiff()
select AVG(DATEDIFF(yyyy, (p.BirthDay), GETDATE()))
from Person p
我试图将这个SQL查询转换为SQL查询。我的问题是AVG()和DATEDIFF()。我试图将LINQ上的这个SQL查询转换为SQL查询,但我有一些困难的Avg()和DateDiff()
尝试像下面
EF6
double resultAverage = ctx.Person.Average(p => DbFunctions.DiffDays(p.BirthDay, DateTime.Now));
EF4
double resultAverage = ctx.Person.Average(p => SqlFunctions.DateDiff("day" ,p.BirthDay, DateTime.Now));
tryAlso
double resultAverage = ctx.Person.Average(p => (DateTime.Now - p.BirthDay).Days);
**我解决做象下面这样:**
var query = (from A in ctx.Persons
select new {
AverageAge = ctx.Persons.Average(p => (Convert.ToInt32(DateTime.Now.ToString("yyyy")) - Convert.ToInt32(p.BirthDay)))
}).Distinct();
注:我已经解决了它,因为p.Birthday以“yyyy”格式返回一个字符串。
我也可以做到这一点还通过应用“以(1)”而不是“另类()”象下面这样:
var query = (from A in ctx.Persons
select new {
AverageAge = ctx.Persons.Average(p => (Convert.ToInt32(DateTime.Now.ToString("yyyy")) - Convert.ToInt32(p.BirthDay)))
}).Take(1);
,而不是试图把它翻译,尝试思考它是做什么并考虑如何去做。 https://stackoverflow.com/questions/4590704/get-average-using-linq https://stackoverflow.com/questions/9/calculate-age-in-c-sharp – Lewis42
也DATEDIFF(yyyy,p.Birthday, GetDate())返回该人见过的除夕的数量,而不是他们的年龄。 –