gpt4 book ai didi

c# - 在 C# List 的下一个列表项中根据 StartDate 设置 EndDate

转载 作者:行者123 更新时间:2023-11-30 19:37:11 25 4
gpt4 key购买 nike

我有一个 C# 列表项如下-

List<MyClass> All_Items = GetListItems();

GetListItems() 返回结果如下-

Category    StartDate    EndDate
AA 2008-05-1
AA 2012-02-1
BB 2009-09-1
BB 2010-08-1
CC 2009-10-1

All_Items 上使用 LINQ,我想更新 EndDate 列,如果

  1. 如果当前类别的开始日期小于同一类别中下一个更大日期项目的开始日期,则使用比更大日期少一天的日期。
  2. 如果没有更大的剩余日期,则更新为 2099-12-31

最终结果如下-

Category    StartDate    EndDate
AA 2008-05-1 2012-01-31
AA 2012-02-1 2099-12-31
BB 2009-09-1 2010-07-31
BB 2010-08-1 2099-12-31
CC 2009-10-1 2099-12-31

我只能想到使用太多循环来完成它。什么是更好的选择?

最佳答案

试试这段代码。它遍历所有项目并选择下一个更大的项目。同一类别的开始日期。如果此类项目不可用,它会为您设置默认日期。

我在手机上写代码时无法测试代码,因此欢迎任何更正。

foreach(var item in All_Items)
{
var nextItem = (from i in All_Items
where i != null &&
i.Category == item.Category &&
i.StartDate > item.StartDate
orderby i.StartDate
select i).FirstOrDefault();
item.EndDate = nextItem != null ? nextItem.StartDate.AddDays(-1) : new DateTime(2099,12,31);
}

关于c# - 在 C# List 的下一个列表项中根据 StartDate 设置 EndDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38978609/

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