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())返回該人見過的除夕的數量,而不是他們的年齡。 –