为什么我的List <t>排序不起作用?</t>

时间:2013-02-08 15:03:04

标签: asp.net-mvc-3 list sorting

我有一个List,我需要在处理之前按日期开始。这是父记录的子记录

 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的顺序。

        //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

我可能做错了什么?我需要按日期顺序列表,以便我能以正确的顺序正确运行一些后端进程。

1 个答案:

答案 0 :(得分:2)

DateOfLeave属性是一个字符串,可能以这种形式存储:

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

如果你把这些作为字符串排序,7/10会在7/8之前出现,因为'1'小于'8'。要解决此问题,请将您的属性设为DateTime或在进行排序之前对其进行转换。