2016-05-17 37 views
0

我需要再次幫助。我目前正在一個樣本項目上工作。在那裏我有一個列表框,可以在選定的時間段內使用汽車。這段時間是通過Windows窗體中的DateTime-Control選擇的。看在選定的時間段內是否有租賃

所以我有一個循環(foreach),我刪除了所有列表條目,這些列表條目在選定的時間段內不可用。

它看起來像這樣

int recordsRemoved = availableCars.RemoveAll(f =>f.ObjectID == v.Car && dtStartDate.Value >= v.StartDate | dtEndDate.Value <= v.EndDate); 

dtStartDate是Windows窗體控件和v.StartDate是從租金在我的數據庫的起始日期。

我希望這是可以理解的那麼遠,

正如你可能會說,我的「如果」不工作的方式,我想。我需要的是一個選項,用於刪除已經從(例如)10.05.2016到2016年5月17日期間租用的每輛車。

當我選擇10.05.2016至17.05.2016我不希望任何汽車在列表中(例如)從2016年5月12日到2016年5月23日的租金。

嗯,再一次,我希望我能解釋一下,以便你能理解它。

提前感謝

+0

您可能還需要確保'dtStartDate.Value <= v.EndDate'和'dtEndDate.Value> = v.StartDate '。之後,一些仔細放置的括號將有助於提高可讀性。 –

+0

'|'與'||'不一樣。首先是一個位操作符,其次是一個布爾操作符。我相信你需要第二個版本。正如@ p.s.w.g所說的,當使用'or'運算符和''''運算符時,需要括號。 –

+0

嘗試改進您的條件,如'f.ObjectID == v.Car && dtStartDate.Value> = v.StartDate && dtEndDate.Value <= v.EndDate);' –

回答

0

嘗試Where象下面這樣:

int recordsRemoved = availableCars.RemoveAll(availableCars.Where(f =>f.ObjectID == v.Car && dtStartDate.Value >= v.StartDate && dtEndDate.Value <= v.EndDate));