select AVG(DATEDIFF(yyyy, (p.BirthDay), GETDATE()))
from Person p
このSQLクエリをLinqからSQLクエリに変換しようとしています。私の問題はAVG()とDATEDIFF()です。私はLinqのSQLクエリをSQLクエリに変換しようとしていますが、Avg()とDateDiff()で難しいです。
select AVG(DATEDIFF(yyyy, (p.BirthDay), GETDATE()))
from Person p
このSQLクエリをLinqから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())は、自分の年齢ではなく、その人が見た大晦日の数を返します。 –