使用C#中的日期对字符串列表进

我有一个带有日期的List
我的清单是:

 {"01/01/2013","10/01/2013","20/01/2013"} 

我想将列表排序为如下所示:

 {"20/01/2013","10/01/2013","01/01/2013"} 

我该怎么做?

用linq:

 var list = new List {"01/01/2013", "10/01/2013", "20/01/2013"}; var orderedList = list.OrderByDescending(x => DateTime.Parse(x)).ToList(); 

你不应该使用数据的字符串表示 – 我们都生活在面向对象的世界:)

最好的方法是将这些字符串转换为实际的DateTime对象,并通过linq以相反的顺序对它们进行排序:

 var dates = Array.ConvertAll(dateStrings, x => DateTime.Parse(x)); return dates.OrderByDesc(x => x); 

另一种方法是实现自定义排序function,请参阅此链接 。 然后你只需在排序函数中使用它:

 DateAsStringComparer myComparer = new DateAsStringComparer(); dateStrings.Sort(myComparer); 

试试这个:

 List s = new List() { "01/01/2013", "10/01/2013", "20/01/2013" }; var d = s.OrderByDescending(i => DateTime.ParseExact(i, "dd/MM/yyyy", null)); 

因为它们是英国/ AUS格式(日/月/年),您可以使用OrderByDescending对它们进行OrderByDescending

 List dates = new List() { "01/01/2013", "10/01/2013", "20/10/2013" }; foreach (var date in dates.OrderByDescending(x => x)) Console.WriteLine(date); 

我个人首先将它们转换为DateTime对象..

为什么要使用List而不是List

 List dates = ... dates.OrderByDescending(c => c).ToList();