我想比較一個包含日期和日期範圍的日期的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