2016-05-17 5 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から17.05.2016までのレンタルされているすべての車を削除するオプションです。

私が10.05.2016から17.05.2016を選択したとき、私はリストに載っている車を(例えば)12.05.2016から23.05.2016までの家賃にすることは望ましくありません。

もう一度、私はあなたがそれを理解できるように説明できることを願っています。事前

+0

あなたはおそらくも必ず 'dtStartDate.Valueようにする必要があり、<= v.EndDate'と' dtEndDate.Value> = v.StartDate '。その後、慎重に置かれた括弧は、読みやすくするために役立ちます。 –

+0

'|'は '||'と同じではありません。最初はビット演算子、2番目はブール演算子です。 2番目のバージョンが必要です。そして、@ p.swwは言ったように、 'and'演算子と' and'演算子を組み合わせて使用​​するときには括弧が必要です。 –

+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)); 
関連する問題