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

ben*_*lim 3 c# arrays sorting

我正试图对我的arraylist进行排序.

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

阵:

9:15 AM, 10:20 AM
Run Code Online (Sandbox Code Playgroud)

我该如何排序?

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

10:20 AM
9:15 AM
Run Code Online (Sandbox Code Playgroud)

以下是我的代码:

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

foreach (var sortedArray in timeSplit)
    {
        sortedTimeListBox.Items.Add(sortedArray);
    }
Run Code Online (Sandbox Code Playgroud)

Kir*_*oll 7

是的,因为你只是分割一个字符串,你只是对一个字符串数组进行排序(意思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();
Run Code Online (Sandbox Code Playgroud)

在这里,我们所做的是:

  1. 像以前一样拆分字符串
  2. 创建一个新的匿名类型,其中包含原始字符串以及转换为a的字符串DateTime.
  3. DateTime酒店订购
  4. Select'回到原来的字符串
  5. 将其转换为数组

timeSplit 现在包含按您的意愿排序的字符串.