使用Lambda按月份显示事件

本文关键字:显示 事件 Lambda 使用 | 更新日期: 2023-09-27 18:24:10

我使用以下代码从SQL数据库中按天显示事件列表:

IEnumerable<EventInstance> distinctDate = instances
             .GroupBy(e => e.StartDate.Date)
             .Select(group => group.First());
foreach (var instance in distinctDate)
            {
                // code to display here
            }

我想做的是在页面上按月划分,所以在每个月浏览页面之间,我可以将month Heading放在H3标签

使用Lambda按月份显示事件

如果你想要每天一个事件,然后按月分组,我想这就是你想要的。请注意,您还必须按年份分组,以避免将不同年份的日期集中在一起。我还在那里添加了一个订单,以确保活动按日期排序。

var distinctDate = instances
    .GroupBy(e => e.StartDate.Date)
    .Select(grp => grp.First())
    .OrderyBy(e => e.StartDate.Date)
    .GroupBy(e => new { e.StartDate.Year, e.StartDate.Month });

然后你会做一些类似的事情

foreach(var monthGrouping in distinctDate)
{
    var month = monthGrouping.Key.Month;
    foreach(var singleDayEvent in monthGrouping)
    {
        var date = singleDayEvent.StartDate;
    }
}