2016-12-20 23 views
2

タプルを含むリストから項目を削除しようとしています。タプルの最初のタプル項目の日付は今日の日付より前です。 LINQと好ましくList <Tuple <DateTime、string >>

List<Tuple<DateTime, string>> Events = new List<Tuple<DateTime, string>>(); 

は、ここに私のコードです。私はこのようなリスト記入

:日付が12月20日の前にあるリストで

Events.Add(new Tuple<DateTime, string>(date, stringtext)); 

だから、任意の項目を、2016年には、削除する必要があります。 2番目のタプル(文字列)は関係ありません。

+0

実際に以前のアイテムを削除したいのですか、2016年12月20日以降にアイテムの列挙を作成しますか?明らかにlinqを使用してそれらを削除することはできないので、列挙している間にリストを変更することになりますが、これは悪いことです。 2016年12月20日以降、linqと '.ToList()'を使ってリストを作成し、新しいリストを 'Events'変数に割り当てることができます。 –

答えて

4
List<Tuple<DateTime, string>> events = new List<Tuple<DateTime, string>>(); 

DateTime date = new DateTime(2016, 12, 20); 

events = events.Where(x => x.Item1 > date).ToList(); 

これにより、20.12.2016より大きい日付のアイテムがイベントに残ります。

+0

ありがとう、ちょうど私が必要としている –

+0

@KevinTinnemansあなたが助けてくれた場合、正しい答えをマークすることができます – mybirthname

+1

ええ、質問をしてから15分待つ必要があります –

4

あなたが本当に(ない他のソリューションが言ったように、新しいリストを作成することによって)、既存のリストからそれらを削除する必要がある場合は、ここでのコードです:

List<Tuple<DateTime, string>> Events = new List<Tuple<DateTime, string>>(); 
DateTime date = new DateTime(2016, 12, 20); 
Events.RemoveAll(x => x.Item1 < date); 
+1

それは良いアプローチです(追加のコレクションは作成されません) –

0

これは、リストを作成するためにLINQと.ToList()を使用しています2016年12月20日以降のもので、新しいリストを変数eventsに割り当てます。

events = events.Where(e=>e.Item1 >= new DateTime(2016, 12, 20)).ToList(); 
関連する問題