繁体   English   中英

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

[英]I need help grouping my data using Linq

我有以下对象:

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

这样,我有一个列表:

private List<AlbumImage> _albumImages;

我想根据拍摄日期对该列表进行分组。 这个想法是,对于每个元素,都将根据特定日期(预定义)检查“采用日期”,因此,举例来说,假设我们使用日期1980年1月1日。

我想将数据分组如下:

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绝对简单:

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,...,其中与LINQ无关,您应该可以编写它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM