は、私は次の方法で問題を解決しました: -
public Dictionary<DateTime, int> GetDataWeekly(IQueryable<Entity> entities, DateTime from, DateTime to)
{
var graphData = new Dictionary<DateTime, int>();
var weekValues = entities.GroupBy(o => new
{
Year = SqlFunctions.DatePart("yyyy", o.DateCreated),
Week = SqlFunctions.DatePart("ww", o.DateCreated)
}).ToDictionary(o=> o.Key, o=>o.Count());
var currentWeekDateTime = from;
while (currentWeekDateTime < to)
{
var total = 0;
var currentWeekNumber = GetWeekOfYear(currentWeekDateTime);
var generatedKey = new
{
Year = (int?)currentWeekDateTime.Year,
Week = (int?)currentWeekNumber
};
if (weekValues.ContainsKey(generatedKey))
{
total = weekValues[generatedKey];
}
graphData.Add(currentWeekDateTime, total);
currentWeekDateTime = currentWeekDateTime.AddDays(7);
}
return graphData;
}
あなたがグループ、あなたのCalendar.GetWeekOfYearと週数によるデータ、およびは「fromDateから」を「toDateまでの反復では見逃さデータポイントを埋めることができます7日間のステップで –
曜日や時間を繰り返して、そのエンティティがその日付に作成されたかどうかを確認するのはなぜですか? –
必要な日付のシーケンスから開始し、実際のデータとグループに参加させることができます。 –