2011-08-02 24 views
3

我在嘗試對我的數組列表進行排序。對格式化時間字符串進行排序

數組列表由時間格式的數據組成。

陣:

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); 
    } 
+0

您可能想要考慮將值轉換爲適當的DateTime結構並使用DateTime.Compare。有關示例,請參閱http://www.dotnetperls.com/sort-datetime。 – nithins

回答

4
Array.Sort(timeSplit, delegate(string first, string second) 
{ 
    return DateTime.Compare(Convert.ToDateTime(first), Convert.ToDateTime(second)); 
}); 
+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. 做過
  3. 創建一個新的匿名類型,其中包含原始字符串以及該字符串轉換爲DateTime
  4. DateTime財產
  5. Select「下令編回原始字符串
  6. 將它轉換成一個數組

timeSplit現在包含歸類爲你想要的字符串。

+0

感謝您的幫助,現在我明白它是如何工作的 –

相關問題