[英]How do I query a DataTable using Linq and group by a collection of columns?
[英]How do I group by Events by year using a single LINQ query?
我有一個表示事件的數據庫表。 該表有兩個主要字段EventDate和EventTitle。
我試圖按年份將事件分組以顯示給用戶。 我正在嘗試使用Linq查詢來拉動具有事件的不同年份,並且每年應該有一個事件列表。 因此,列表中的每條記錄都有一年和事件列表
我假設這可以通過一個linq查詢來完成,但我的linq知識是基本的。 到目前為止,我只在這個查詢的列表中得到了不同的年份:
var yearsList = (from e in Events
select e.EventDate.Year).Distinct();
如何在每年記錄中添加事件列表?
var yearsList = from e in Events
group e by e.EventDate.Year into g
select new { Year = g.Key, Events = g };
這將為您提供具有“年”屬性和“事件”屬性的對象列表(該年度的所有事件)。
看看這個方便的參考: 101 Linq Samples 。
你真的在尋找一個有序的團體。
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
}
}
假設您有以下Event類
public class Event
{
public int Year { get; set; }
public string Name { get; set; }
public static Event[] GetEvents()
{
return new Event[]
{
new Event{ Name="Event1", Year=2001},
new Event{ Name="Event2", Year=2002},
new Event{ Name="Event3", Year=2003},
new Event{ Name="Event4", Year=2001},
new Event{ Name="Event5", Year=2002},
new Event{ Name="Event6", Year=2003},
new Event{ Name="Event7", Year=2001},
new Event{ Name="Event8", Year=2002},
new Event{ Name="Event9", Year=2003}
};
}
}
public class Program
{
static void Main(string[] args)
{
var groupedEvents = Event.GetEvents().GroupBy(e => e.Year);
foreach (var groupedEvent in groupedEvents)
{
Console.WriteLine("Year:{0}",groupedEvent.Key);
foreach (var evnt in groupedEvent)
{
Console.WriteLine("---- Event Name:{0}",evnt.Name);
}
}
}
}
上面應該給你按年份分組的事件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.