以下与C#有关 有4个列表:
INRHolidays
列表:包含所有假日和周末CashFlowDates
:包含从今天起10年的所有日期CashFlowDatesFinal
:在CashFlowdates中包含除INRHolidays之外的所有日期TenorDates
:从现在开始包含一些特定日期,即6m,9m,12m,1y,2y,3y,4y,5y,7y和10y。现在,我要检查TenorDates
中的这些特定日期是否为假期。如果不是,则应将它们直接添加到新列表HolidayAdjustedTenorDates
中,否则应添加CashFlowDates
的下一个工作日。
20只是一个数字,因为我不知道如何设置边界条件。
var HolidayAdjustedTenorDates = new List<string>();
foreach (var a in TenorDates)
{
if (CashFlowDatesFinal.Contains(a))
{
HolidayAdjustedTenorDates.Add(a);
}
else
{
for (var i = 1; i < 20; i++)
{
if(CashFlowDatesFinal.Contains(
Convert.ToDateTime(a).AddDays(i).ToShortDateString()))
{
HolidayAdjustedTenorDates.Add(
Convert.ToDateTime(a).AddDays(i).ToShortDateString());
}
}
}
}
答案 0 :(得分:0)
确切的问题是,您没有得到正确的日期,或者您不知道如何编写循环以放置边界条件?
您可以尝试一会儿循环:
int i = 1;
while(!CashFlowDatesFinal.Contains(Convert.ToDateTime(a).AddDays(i).ToShortDateString()))
{
i++;
}
HolidayAdjustedTenorDates.Add(Convert.ToDateTime(a).AddDays(i).ToShortDateString();
答案 1 :(得分:-1)
我无法发表评论,很抱歉发布答案,但:
1-您应该真正改善代码。 C#是一种强类型语言,因此请避免使用var
,而应使用实类型
2-请勿直接在a
上使用,请使用临时变量。
完成此操作后,您可以避免错误并可以方便调试。
例如,在您的代码中,如果CashFlowDatesFinal
包含DateTime
,则无需与string
(由ToShortDateString()
进行比较)