0

処理する前に日付で開始する必要があるリストがあります。これは親レコードの子レコードです

 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

私は何を間違っているのでしょうか?いくつかのバックエンド プロセスを正しい順序で適切に実行できるように、日付順のリストが必要です。

4

1 に答える 1

2

DateOfLeaveプロパティは文字列であり、次の形式で保存される可能性があります。

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

これらを文字列どおりに並べ替えると、'1' は '8' より小さいため、7/10 は 7/8 より前になります。これを解決するには、プロパティを a にするDateTimeか、並べ替えを行う前に変換します。

于 2013-02-08T15:08:47.853 に答える