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

9 c# sorting date list

我有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)