我有以下对象:
internal class AlbumImage
{
internal string AlbumName { get; set; }
internal string ImagePath { get; set; }
internal DateTime DateTaken { get; set; }
}
有了这个,我有一个List:
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日开始,任何AlbumImages元素的日期为1个月或更短,它们应该在1个月的分组中。从1980年1月1日起,任何AlbumImages元素的日期超过1个月但不超过2个月,它们应该在2个月的分组中。等等......
在Linq ???中这很简单吗
答案 0 :(得分:1)
使用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无关,你应该能够写它。