我創建了一種使用日期(日,月,年)對數據進行分組的方法。LINQ如何按日期分組日期和月份和年份
這是我的代碼:
private IEnumerable<StatsticsVm> GetStatsticsPerDay(StatsticsQueryModel sqm)
{
var messages = GetMessagesByDateAndIU(sqm);
IEnumerable<StatsticsVm> messagesCountPerDay =
from year in Enumerable.Range(sqm.From.Year, sqm.To.Year - sqm.From.Year + 1)
from month in Enumerable.Range(1, 12)
from day in Enumerable.Range(1, 31)
let key = new { Year = year, Month = month, Day = day }
join message in messages on key
equals new
{
message.ObservationDateTime.Year,
message.ObservationDateTime.Month,
message.ObservationDateTime.Day
} into g
select new StatsticsVm()
{
Label = key.Day + "/" + key.Month + "/" + key.Year,
MessagesCount = g.Count()
};
return messagesCountPerDay;
}
我的問題是:這種方法有一個bug,該bug是結果總是包含12個月,31天我想要的結果是一樣的過濾器。
例如,如果我只想從第1天到第15天的數據,我總是從第1天到第31天獲得小組。
注意:即使一天有0條消息,我也希望包含在我的過濾器中的所有日子。這已經在這個方法中完成了。
你說要包括所有的日子,那麼爲什麼有所有的月份和日期的問題嗎? 「我希望結果與過濾器一樣」是什麼意思? –
我的意思是我只想要(幾年,幾個月,幾天),即使這些日子裏沒有消息。並且這裏的錯誤是即使我的過濾器是從第3個月到第12個月,結果總是從第1個月到第12個月以及從第1天到第31天。我希望我現在說清楚。 –
從一天到十三或三十一?這有點不清楚,你應該按照最小和最大月份的方法分最小和最大月份 – Tinwor