indexlist = saveList
.Where(i => (Convert.ToDateTime(i.event_startdate) < DateTime.Today)
&& (Convert.ToDateTime(i.event_endDate) < DateTime.Today))
.ToList();
Event_list.ItemsSource = indexlist.OrderBy(i => i.event_startdate);
我编写了上面的代码来对包含此格式的日期的列表进行排序(2015年9月11日),我想按照它的方式对其进行排序,它应该在列表顶部显示最近的日期日期。 如何修改上述声明
我尝试过使用OrderByDescending(i=>i.event_startdate);
但没有用。
答案 0 :(得分:2)
您是按转换后的DateTime
过滤了这些项目,但是您要通过string
/ object
对其进行排序。您可以将DateTime
存储在anoymous类型中:
indexlist = saveList
.Select(i => new {
event = i,
event_startdate = Convert.ToDateTime(i.event_startdate),
event_endDate = Convert.ToDateTime(i.event_endDate),
})
.Where(x => x.event_startdate < DateTime.Today && x.event_endDate < DateTime.Today)
.OrderByDescending(x => x.event_startdate)
.Select(x => x.event)
.ToList();
Event_list.ItemsSource = indexlist;
答案 1 :(得分:1)
您需要将日期解析为DateTime
对象以便按其排序,然后事情会很简单:
var results = (from item in saveList
let dtStart = Convert.ToDateTime(item.event_startdate)
let dtEnd = Convert.ToDateTime(item.event_endDate)
where dtStart.Date < DateTime.Today && dtEnd.Date < DateTime.Today
orderby dtStart descending
select item).ToList();
Event_list.ItemsSource = results;