gpt4 book ai didi

c# - 找到缺失的月份

转载 作者:太空狗 更新时间:2023-10-29 21:19:48 26 4
gpt4 key购买 nike

我有自己的方法,但我不相信它是最好的,在 C#

给定一个 List<DateTime> , 一个 DateTime startDate和一个 DateTime endDate .您将如何退回新的 List<DateTime> startDate 之间的每个endDate 包含在原始 List<DateTime> 中包括 startDateendDate .

日期不能保证是月初,可以是该月内的任何日期。

startDateendDate可能跨越多年。

返回的列表应包含缺少的每个月的第一天。

谢谢,我希望它有意义。

最佳答案

var list = new List<DateTime>
{
new DateTime(1231223423433132),
new DateTime(13223123132),
new DateTime(12333123132),
new DateTime(123345123132),
DateTime.Now,
new DateTime(5634534553)
};

var allYearMonthes = list.Select(o =>
Eumerable.Range(1, 12)
.Select(q => new { o.Year, Month = q }))
.SelectMany(o => o);

var enumerable = allYearMonthes.Except(list.Select(o => new { o.Year, o.Month }));

var dateTimes = enumerable.Select(o => new DateTime(o.Year, o.Month, 1));

编辑:对于那些可能对完整解决方案感兴趣的人:

DateTime StartDate = DateTime.Now, EndDate = DateTime.Now.AddYears(5).AddMonths(2);
var allYearMonthes = Enumerable.Range(StartDate.Year, EndDate.Year - StartDate.Year -1)
.Select(o => Enumerable.Range(1, 12)
.Select(q => new { Year = o, Month = q }))
.SelectMany(o => o);

var enumerable = allYearMonthes.Except(list.Select(o => new { o.Year, o.Month }));
var dateTimes = enumerable.Select(o => new DateTime(o.Year, o.Month, 1));

关于c# - 找到缺失的月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4691212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com