我有一个简单的列表
- T.Date = 11/04/2014, T.Title = "Book1", T.Tipology = "Book"
- T.Date = 14/04/2014, T.Title = "Book2", T.Tipology = "Book"
- T.Date = 02/05/2015, T.Title = "Spot1", T.Tipology = "Spot"
- T.Date = 21/06/2015, T.Title = "Newspaper1", T.Tipology = "Newspaper"
我需要按年、月、日对列表进行分组,如下所示:
- 2014
- April
- T.Date = 11/04/2014, T.Title = "Book1", T.Tipology = "Book"
- T.Date = 14/04/2014, T.Title = "Book2", T.Tipology = "Book"
- 2015
- May
- T.Date = 02/05/2015, T.Title = "Spot1", T.Tipology = "Spot"
- June
- T.Date = 21/06/2016, T.Title = "Newspaper1", T.Tipology = "Newspaper"
所以我将能够在 foreach 函数中处理数据,例如:
foreach(var year in Year)
{
foreach(var month in Month)
{
foreach(var day in Day)
{
Console.WriteLine(day.Item.Title);
Console.WriteLine(day.Item.Tipology);
}
Console.WriteLine(month.ToString()); // With culture
}
Console.WriteLine(year.ToString());
}
我如何使用 (c#) LINQ 做到这一点?
最佳答案
您可以按年、月、日排序:
var sorted = list.OrderBy(x=>x.Date.Year)
.ThenBy(x=>x.Date.Month)
.ThenBy(x=>x.Date.Day);
如果你真的想对它们进行分组,那么你可以这样做:
var result = from l in list
group l by new { l.Date.Year,l.Date.Month} into g
select new
{
Year = g.Key.Year,
Month = g.Key.Month,
Items = g.ToList()
};
因此它将为您提供每年月份日期的分组数据
关于c# - LINQ - Group List<T> 到年、月、日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31026388/