使用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();