我需要帮助分组我的数据使用Linq

本文关键字:数据 Linq 我的 帮助 | 更新日期: 2023-09-27 18:19:16

我有以下对象:

internal class AlbumImage
{
    internal string AlbumName { get; set; }
    internal string ImagePath { get; set; }
    internal DateTime DateTaken { get; set; }
}

这样,我就有了一个列表:

private List<AlbumImage> _albumImages;

我想根据所采取的日期对这个列表进行分组。其思想是,对于每个元素,将根据特定的日期(预定义的)检查Date Taken,因此为了示例起见,假设我们使用日期Jan 1, 1980。

我想把我的数据分组如下:

1 month
2 months
3 months
4 months
5 months
6 months
7 months
8 months
9 months
10 months
11 months
12 months
18 months
24 months
36 months
48 months
etc.

这个想法是一年后,分组改为6个月为基础。

回到我1980年的日期,任何从1980年1月1日起1个月或更短的AlbumImages元素,它们应该在1个月分组中。任何从1980年1月1日起超过1个月但少于2个月的AlbumImages元素都应该属于2个月组。等等…

这在Linq中很容易做到吗??

我需要帮助分组我的数据使用Linq

使用LINQ:

var specificDate = new DateTime(1980, 1, 1);
var results = (from x in input
              group x by GetGroup(x, specificDate) into g
              select new {
                  Time = g.Key, 
                  Images = g.ToList()
              }).ToList();

当然,我假设你已经有一个叫做GetGroup(DateTime date, DateTime startDate)的方法,它遵循你所描述的逻辑:返回1,2,3,4,…,12,18,24,…