排序日期和时间

Ush*_*her 0 c#

我试图编写一个控制台应用程序,根据开始日期按升序排序我的日期和时间,这是我要做的一个例子.

我的意见:

break Start1 = 15/02/12 12.30PM
break End1= 15/02/12 01.30PM
break Start2 = 15/02/12 11.00AM
break End2= 15/02/12 12.00PM
break Start3 = 15/02/12 12.00PM
break End3= 15/02/12 01.00PM

我期待我的输出应该像:

break Start1 = 15/02/12 11.00AM
break End1= 15/02/12 12.00PM
break Start2 = 15/02/12 12.00PM
break End2= 15/02/12 01.00PM
break Start3 = 15/02/12 12.30PM
break End3= 15/02/12 01.30PM

请建议我解决这个问题的最佳方法?

mip*_*e34 5

我建议您要配对原始的起始值和结束值,然后仅按开始日期对其进行排序.

首先,你必须配对StartEnd.例如上课:

public class Break
{
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后,当您填充此类对象的集合时,只需Start使用LINQ进行排序即可.

var breaks = new List<Break>()
                 {
                     new Break()
                         {
                             Start = new DateTime(2012,2,15,12,30,0),
                             End = new DateTime(2012,2,15,13,30,0)
                             ... /// etc.
                         }
                 };

var ordered = breaks.OrderBy(s => s.Start);
foreach (var ord in ordered)
{
    System.Console.WriteLine(ord.Start);
    System.Console.WriteLine(ord.End);
}
Run Code Online (Sandbox Code Playgroud)

编辑

要创建配对的日期时间对象,您可以使用以下方法:

public static Break ConvertToBreak(string startDate, string endDate, object gmtOffset)
{
     var dtStart = UnixTimeConverter(startDate, System.Convert.ToDecimal(gmtOffset));
     var dtEnd =  UnixTimeConverter(endDate, System.Convert.ToDecimal(gmtOffset));
     return new Break{Start = dtStart, End = dtEnd};
}
Run Code Online (Sandbox Code Playgroud)