我有List<string>约会.
我的清单是:
{"01/01/2013","10/01/2013","20/01/2013"}
Run Code Online (Sandbox Code Playgroud)
我想将列表排序为如下所示:
{"20/01/2013","10/01/2013","01/01/2013"}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
mip*_*e34 28
使用linq:
var list = new List<string> {"01/01/2013", "10/01/2013", "20/01/2013"};
var orderedList = list.OrderByDescending(x => DateTime.Parse(x)).ToList();
Run Code Online (Sandbox Code Playgroud)
更新(根据评论中的问题):
您可以像这样处理无效日期(无效日期被视为default(DateTime)):
var list = new List<string> { "01/01/2013", "10/01/2013", "N/A" , "20/01/2013" };
var orderedList2 = list.OrderByDescending(x =>
{
DateTime dt;
DateTime.TryParse(x, out dt);
return dt;
});
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望将无效的日期时间作为列表中的第一项:
var orderedList3 = list.OrderByDescending(x =>
{
DateTime dt;
if (!DateTime.TryParse(x, out dt)) return DateTime.MaxValue;
return dt;
});
Run Code Online (Sandbox Code Playgroud)
您还可以过滤无效日期:
var filteredList = list.Where(x =>
{
DateTime dt;
return DateTime.TryParse(x, out dt);
}).Select(DateTime.Parse).OrderByDescending(x => x);
Run Code Online (Sandbox Code Playgroud)