簡體   English   中英

如何使用單個LINQ查詢按年度按事件分組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM