我正在尝试使用DateTime字段并创建DateObject列表,其中DateObject有2个属性(年和范围)。我想确定DateTime字段的年份然后......如果它是偶数,我想保留那一年年。如果它很奇怪,我想将它改为年份 - 年份。
然后,基于此,我想识别 Range 的字符串,它看起来像“[EvenYear] to [EvenYear + 1]”。
我的数据如下:
资料表
如果记录如下:
我希望DateObjects的输出列表看起来像这样(基于年份分开):
我很沮丧地搞清楚这一点。我尝试了很多代码。
这是我遗留下来的代码,但仍然失败了:
var sessionYears = db.tblDates.GroupBy(x => (x.Date.Year % 2 == 0 ? x.Date.Year : x.Date.Year - 1)).ToList();
return sessionYears.Select(x => new List<DateObject> {
StartYear= x.Key,
Range = x.Select(y => y.Date.Year + " to " + (y.Date.Year + 1))
}
我已经尝试过使用distinct和groupby,但我显然缺少一些步骤等等。我在网上找不到任何东西。任何帮助将不胜感激!!!提前谢谢。
答案 0 :(得分:2)
您可以先创建DateRangeObject
列表,然后再获取不同的值。这将使您的查询更加简单。
return db.tblDates
.Select(x => new DateRangeObject {
StartYear = x.Date.Year % 2 == 0 ? x.Date.Year : x.Date.Year - 1,
EndYear = (x.Date.Year % 2 == 0 ? x.Date.Year : x.Date.Year - 1) + " - " + ((x.Date.Year % 2 == 0 ? x.Date.Year : x.Date.Year - 1) + 1);
})
.GroupBy(x => x.StartYear)
.Select(x => x.First())
.ToList();