C# 格式化时间字符串的排序数组

C# 格式化时间字符串的排序数组,c#,arrays,sorting,C#,Arrays,Sorting,我正在尝试整理我的arraylist 数组列表由时间格式的数据组成 数组: 9:15 AM, 10:20 AM 我该怎么分类呢 我从以下代码中得到的结果是: 10:20 AM 9:15 AM 下面是我的代码: String timeText = readFileTime.ReadLine(); timeSplit = timeText.Split(new char[] { '^' }); Array.Sort(timeSplit); foreach (var sortedA

我正在尝试整理我的arraylist

数组列表由时间格式的数据组成

数组:

9:15 AM, 10:20 AM
我该怎么分类呢

我从以下代码中得到的结果是:

10:20 AM
9:15 AM
下面是我的代码:

String timeText = readFileTime.ReadLine();
    timeSplit = timeText.Split(new char[] { '^' });
    Array.Sort(timeSplit);

foreach (var sortedArray in timeSplit)
    {
        sortedTimeListBox.Items.Add(sortedArray);
    }

是的,因为您只是拆分一个字符串,所以您只是对字符串数组进行排序(意思是
1
位于
9
之前,它不关心小数点)。要获得所需的排序,首先需要将其转换为
DateTime
,如下所示:

timeSplit = timeText
    .Split(new char[] { '^' });
    .Select(x => new { Time = DateTime.Parse(x), String = x })
    .OrderBy(x => x.Time)
    .Select(x => x.String)
    .ToArray();
在这里,我们所做的是:

  • 像以前一样拆分字符串
  • 创建一个新的匿名类型,该类型包含原始字符串以及转换为
    DateTime
    的字符串
  • DateTime
    属性排序
  • 选择返回原始字符串的
  • 将其转换为数组

  • <代码> TimeSPLIT 现在包含了按需要排序的字符串。

    您可能需要考虑将这些值转换为适当的DATE时间结构,并使用DATETMEM.比较。有关示例,请参见。
    Array.Sort(timeSplit, delegate(string first, string second)
    {
        return DateTime.Compare(Convert.ToDateTime(first), Convert.ToDateTime(second));
    });