如何使用单个LINQ查询按年度按事件分组?

ora*_*dov 6 c# linq

我有一个表示事件的数据库表.该表有两个主要字段EventDate和EventTitle.

我试图按年份将事件分组以显示给用户.我正在尝试使用Linq查询来拉动具有事件的不同年份,并且每年应该有一个事件列表.因此,列表中的每条记录都有一年和事件列表

我假设这可以通过一个linq查询来完成,但我的linq知识是基本的.到目前为止,我只在这个查询的列表中得到了不同的年份:

var yearsList = (from e in Events
                 select e.EventDate.Year).Distinct();
Run Code Online (Sandbox Code Playgroud)

如何在每年记录中添加事件列表?

Mat*_*ton 8

var yearsList = from e in Events
                group e by e.EventDate.Year into g
                select new { Year = g.Key, Events = g };
Run Code Online (Sandbox Code Playgroud)

这将为您提供具有"年"属性和"事件"属性的对象列表(该年度的所有事件).

看看这个方便的参考:101 Linq Samples.


Jac*_*itt 7

你真的在寻找一个有序的团体.

var yearsList = from e in Events
                group e by e.EventDate.Year into g
                orderby g.Key
                select g;

foreach(var yearGroup in yearsList)
{
    int year = yearGroup.Key;
    foreach(Event e in yearGroup)
    {
        // do something with the events
    }
}
Run Code Online (Sandbox Code Playgroud)