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