我有一个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
我可能做错了什么?我需要按日期顺序列表,以便我能以正确的顺序正确运行一些后端进程。
答案 0 :(得分:2)
您DateOfLeave
属性是一个字符串,可能以这种形式存储:
7/10/2013
7/8/2013
7/12/2013
如果你把这些作为字符串排序,7/10会在7/8之前出现,因为'1'小于'8'。要解决此问题,请将您的属性设为DateTime
或在进行排序之前对其进行转换。