我想比较一个包含日期和日期范围的日期的AAA列表。我想查看是否有任何日期范围存在于列表中。如果日期存在,我将列表项目复制到另一个列表BBB,否则我将空值添加到列表BBB。While循环难度
我遇到的问题是,用我的实际代码,我不知道如何不通过while循环的虚假陈述,直到它达到比较结束。
使用下面的代码,它会在while循环中传递true和false两个参数,这会伪造所需的结果。我所获得的结果是每一次出现的时候,我都有同样的错误。简而言之,可以说列表中包含日期为2010年5月5日,日期范围为2010年4月5日至7/5/2010。所以我会在真实部分创建一个项目,并创建一个项目创建错误部分,这是错误的。目前的日期可以是真实或虚假的部分。不是两个,这样我就有两件物品了!
我该如何达到正确的结果?请任何其他方法或suggetsion。
我的代码如下:
DateTime StartDate;
DateTime EndDate;
Datetime tempDate = StartDate;
List<DateTime> dateToEvaluate;
bool TimeIsPresent = false;
foreach (var tempItem in TaskList)
{
while (EndDate.AddDays(1) != tempDate)
{
if (tempItem.Date[0] == tempDate)
{
TimeIsPresent = True;
break;
}
else
{
if (TimeIsPresent == False)
{
if (!(tempDate.DayOfWeek == DayOfWeek.Sunday)
{
dateToEvaluate = new List<DateTime>();
dateToEvaluate.Add(tempDate);
tempTask.Add(new GroupedTask { ID = null,
TaskID = null,
Date = dateToEvaluate });
}
}
}
tempDate = tempDate.AddDays(1);
}
if (TimeIsPresent == True)
{
tempTask.Add(new GroupedTask { ID = tempItem.ID,
TaskID = tempItem.TaskID,
Date = tempItem.Date });
TimeIsPresent = false;
}
}
让我给你举个例子。我的日期范围如下:8月8日星期一 - 8月14日星期日 现在我的任务列表如下:item1:日期9ug,item2:日期11ug。
所以我tempTask必须如下: 物品1:日期8月8日,任务id:空,ID:空, ITEM2:日期8月9日,任务id:678,ID:7, 项目3:日期10Aug,任务id: null,ID:null, item4:Date11 Aug,taskID:890,ID:34, item5:Date 12 Aug,taskID:null,ID:null, item6:Date 13 Aug,taskID:null,ID:null
第二个例子:
我的日期范围如下:周一至8月8日 - 桑德唉8月14日 现在我的任务列表如下:项目1:日期9Aug,ITEM2:日期11Aug,项目3:日期14Aug
所以我tempTask必须如下: 物品1:日期8月8日,任务id:空,ID :null, item2:日期9 Aug,taskID:678,ID:7, item3:Date10ug,taskID:null,ID:null, item4:Date11 Aug,taskID:890,ID:34, item5:Date 8月12日,任务id:空,ID:空, ITEM6:日期8月13日,任务id:空,ID:空, ITEM4:Date14八月,任务id:894,编号:74,
为什么不使用'bool'作为TimeIsPresent,并将其设置为'false'? –
你知道,如果你将'TimeIsPresent'定义为一个'bool',你不需要'true'和'false'的引号 - 事实上,你可以使用'if(TimeIsPresent)'或'if(! TimeIsPresent)'代替。 – Gabe
EndDate来自哪里,为什么你要重新计算'EndDate.AddDays(1)'? – R0MANARMY