使用 Times C# 对列表 <string> 进行排序

Sorting a List<string> with Times C#

我有一个List<string>,时间如下:

8:00 AM 
8:15 AM
8:30 AM....
3:00 PM
3:15 PM....
11:45 PM
12:00 AM

有办法解决这个问题吗?内置的东西还是我必须为此写一些定制的东西。

有什么建议吗?

考虑 OrderBy:

List<string> list = new List<string>() {"8:00AM", "4:00AM", "2:00AM", "3:14PM"};
List<string> sortedList = list.OrderBy(s => DateTime.Parse(s)).ToList();

AlexD 的答案是正确的,但是使用 ParseExact 和提供的实际模式比 Parse 快得多。从逻辑上讲,你提供了如何解析它,它更快,这里还有一篇解决这个问题的博文,DateTime parsing performance

const string Pattern = "h:mm tt";

void Sort()
{
    var Times = new string[]
    {
        "8:00 AM",
        "8:15 AM",
        "8:30 AM",
        "3:00 PM",
        "3:15 PM",
        "11:45 PM",
        "12:00 AM"
    };

    var Dates = Times.OrderBy(x => DateTime.ParseExact(x, Pattern, CultureInfo.InvariantCulture));
}

或者如果您想要最快的解析 TryParseExact,您必须创建一个完整的委托方法而不是简单的 lambda。

var Dates = Times.OrderBy(x =>
                {
                    DateTime date;
                    DateTime.TryParseExact(x, Pattern, CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
                    return date;
                });