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

时间:2011-08-02 01:33:08

标签: 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 sortedArray in timeSplit)
    {
        sortedTimeListBox.Items.Add(sortedArray);
    }

2 个答案:

答案 0 :(得分:7)

是的,既然您只是拆分一个字符串,那么您只需要对字符串的数组进行排序(意味着19之前,它并不关心小数点)。要获得所需的排序,您需要先将其转换为DateTime,如下所示:

timeSplit = timeText
    .Split(new char[] { '^' });
    .Select(x => new { Time = DateTime.Parse(x), String = x })
    .OrderBy(x => x.Time)
    .Select(x => x.String)
    .ToArray();

在这里,我们所做的是:

  1. 按照之前的方式拆分字符串
  2. 创建一个新的匿名类型,其中包含原始字符串以及转换为DateTime的字符串。
  3. DateTime属性
  4. 订购
  5. Select'编辑回原始字符串
  6. 将其转换为数组
  7. timeSplit现在包含按您的意愿排序的字符串。

答案 1 :(得分:4)

Array.Sort(timeSplit, delegate(string first, string second)
{
    return DateTime.Compare(Convert.ToDateTime(first), Convert.ToDateTime(second));
});
相关问题