2013-02-08 83 views
0

我有一個列表,我需要在處理它之前按日期開始。這是父記錄的子記錄爲什麼不是我的清單<t>排序工作?

public class DayRequested 
{ 
    public int RequestId { set; get; } 
    public string DateOfLeave { get; set; } 

    public static int CompareDateOfLeave(DayRequested d1, DayRequested d2) 
    { 
     return d1.DateOfLeave.CompareTo(d2.DateOfLeave); 
    } 
} 

在我的控制器中,我首先在處理它之前對它進行分類。以下是我嘗試過的所有方法。請注意,當我第一次嘗試時,未註釋的人工作。這些都沒有改變名單的順序。

 //List<DayRequested> requestedDays = requestedDaysIn.OrderBy(o => o.DateOfLeave).ToList(); 

     requestedDays = requestedDays.OrderBy(o => o.DateOfLeave).ToList(); 

     //Comparison<DayRequested> comp = new Comparison<DayRequested>(DayRequested.CompareDateOfLeave); 
     //requestedDays.Sort(comp); 

     //requestedDays.Sort(delegate(DayRequested a, DayRequested b) 
     //{ 
     // return a.DateOfLeave.CompareTo(b.DateOfLeave); 
     //}); 

     DateTime nextFirstDay = Convert.ToDateTime(requestedDays.First().DateOfLeave); 

在我的名單上有:

1, 07/10/2013, other info here 
1, 07/10/2013, other info here 
1, 07/12/2013, other info here 
1, 07/12/2013, other info here 
1, 07/08/2013, other info here 
1, 07/08/2013, other info here 

什麼可能我是做錯了什麼?我需要日期順序的列表,以便我可以按正確的順序正確運行一些後端進程。

+0

http://stackoverflow.com/questions/1433088/asp-net-mvc-model-orderby-date-has-no-effect的副本? – varesa 2013-02-08 15:08:56

+0

@varesa:這個問題與那個無關。 – PinnyM 2013-02-08 15:12:17

+0

我只是更仔細地再次閱讀另一個Q,並注意到相同。我一開始並沒有看到其他問題是關於排序的項目... – varesa 2013-02-08 15:13:49

回答

2

DateOfLeave屬性是一個字符串,以及可能存儲在這個形式:

7/10/2013 
7/8/2013 
7/12/2013 

如果你給它們排序,因爲它們是琴絃,7/10 7/8來之前,因爲「1」小於'8'。要解決這個問題,請將您的財產設爲DateTime或在進行排序前進行轉換。

+0

我完全錯過了。 :-/ 感謝您指出了這一點。在排序之前,我轉換爲'DateTime'。它現在有效。 – 2013-02-08 15:16:28