私は、datetimeフィールドのdate部分だけでLinqグループをやろうとしています。
このlinqステートメントは機能しますが、日付と時刻でグループ化されています。
var myQuery = from p in dbContext.Trends
group p by p.UpdateDateTime into g
select new { k = g.Key, ud = g.Max(p => p.Amount) };
この文を実行して日付だけでグループ化すると、次のエラーが発生します。
var myQuery = from p in dbContext.Trends
group p by p.UpdateDateTime.Date into g //Added .Date on this line
select new { k = g.Key, ud = g.Max(p => p.Amount) };
指定された型メンバー 'Date'は、LINQ to Entitiesではサポートされていません。 初期化子、エンティティメンバ、およびエンティティナビゲーションプロパティのみがサポートされています。
日付と時刻ではなく、日付でグループ化するにはどうすればよいですか。
使用EntityFunctions.TruncateTime方法:
var myQuery = from p in dbContext.Trends
group p by EntityFunctions.TruncateTime(p.UpdateDateTime) into g
select new { k = g.Key, ud = g.Max(p => p.Amount) };
考えられる解決策ここにこれは次のパターンに従います。
var q = from i in ABD.Listitem
let dt = p.EffectiveDate
group i by new { y = dt.Year, m = dt.Month, d = dt.Day} into g
select g;
だから、あなたのクエリ[未テスト]の場合:
var myQuery = from p in dbContext.Trends
let updateDate = p.UpdateDateTime
group p by new { y = updateDate.Year, m = updateDate.Month, d = updateDate.Day} into g
select new { k = g.Key, ud = g.Max(p => p.Amount) };
使えないDateTime.Date
Linq-to-Entitiesクエリで。明示的にフィールドでグループ化するか、またはDate
データベース内のフィールド。 (私は同じ問題を抱えていた - 私は使用したDate
データベース内のフィールド。