对列表进行排序<;字符串>;与时代C#

对列表进行排序<;字符串>;与时代C#,c#,sorting,visual-studio-2012,C#,Sorting,Visual Studio 2012,我有一个列表,时间如下: 8:00 AM 8:15 AM 8:30 AM.... 3:00 PM 3:15 PM.... 11:45 PM 12:00 AM 有什么办法可以分类吗?内置的东西,或者我必须为此编写自定义的东西 有什么建议吗?考虑一下: List List=newlist(){“8:00AM”、“4:00AM”、“2:00AM”、“3:14PM”}; List-sortedList=List.OrderBy(s=>DateTime.Parse)).ToList(); AlexD的

我有一个
列表
,时间如下:

8:00 AM 
8:15 AM
8:30 AM....
3:00 PM
3:15 PM....
11:45 PM
12:00 AM
有什么办法可以分类吗?内置的东西,或者我必须为此编写自定义的东西

有什么建议吗?

考虑一下:

List List=newlist(){“8:00AM”、“4:00AM”、“2:00AM”、“3:14PM”};
List-sortedList=List.OrderBy(s=>DateTime.Parse)).ToList();

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

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

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

您可以使用List.Sort方法(IComparer),编写一个比较器方法,或者尝试解析到日期的时间。解析“…”会带来麻烦……谢谢,工作得很好。@SaniHuttunen啊,我把
读作“日期时间字符串的其余部分”。如果按字面意思是
,则必须调整按键功能。@AlexD:可以理解。也许这就是问题的答案。但从提供的数据来看,还有更多的工作要做…:)
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));
}
var Dates = Times.OrderBy(x =>
                {
                    DateTime date;
                    DateTime.TryParseExact(x, Pattern, CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
                    return date;
                });