2016-12-20 19 views
2

我想從元組中刪除項目,其中第一個元組項目的日期在今天的日期之前。如何從列表中刪除項目<元組<日期時間,字符串>>

這裏是我的代碼:

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

最好。

我填名單如下:

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

所以在列表,日期是十二月20日之前的任何項目,2016年應該被刪除。第二個元組(字符串)並不重要。

+0

您確實想刪除早期的項目,或者只是在2016年12月20日之後創建項目的枚舉嗎?因爲顯然你不能只用linq來刪除它們,這會在枚舉時修改列表,這會很糟糕。你可以使用linq和'.​​ToList()'創建2016年12月20日之後的列表,然後將新列表分配給'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(); 
相關問題