我的数据集看起来像这样:
FileName Date
ABC - 01/10/16
DBC - 01/11/16
ZYX - 03/10/16
ABX2 - 01/10/17
IOS - 01/09/17
如何将这些组合成一组几个月的组合,同时确保在该条款中考虑到这一年?
我目前正在使用LINQ Query按月创建群组但不包括年份,所以我有一组ABC,ZYX和ABX2。尽管ABX2是一份2017年的报告,但同一个月应该是另一组。
我一直在尝试不同的方法,但迄今为止都没有成功。
var newList = from x in list
group x
by x.Properties.LastModified.Value.Month into lastMod
where lastMod.Count() > 1
select lastMod;
一旦我将它们放在不同的组中,我会找出最后写的是哪一个并保存并删除其余组。我很困难,并在这个问题上待了半天。我会欣赏新鲜的眼睛。
答案 0 :(得分:2)
您可以使用复合的年月密钥进行分组,如下所示:
var newList = list
.Where(x => x.Properties.LastModified.HasValue)
.GroupBy(x => new {
x.Properties.LastModified.Value.Month
, x.Properties.LastModified.Value.Year
})
.Where(g => g.Count() > 1);
在访问LastModified
属性之前,您需要确保Value
具有非空值。
答案 1 :(得分:1)
我目前无法对此进行测试,但我认为按照包含月份和年份的匿名类型进行分组应该这样做。
var newList = from x in list
group x
by new {x.Properties.LastModified.Value.Month, x.Properties.LastModified.Value.Year} into lastMod
where lastMod.Count() > 1
select lastMod;