2017-07-10 27 views
0

所以我有一个列表与对象。这些对象有一个属性TimeStamp。问题是,这个属性是一个字符串。现在,通过时间戳排序列表时,排序功能忽略“AM”和“PM”在列表中进行演员表<T>。排序

var historicalAlarms = new List<IHistoricalAlarmItem>(); 
foreach(...) 
{ 
    ... 
} 

historicalAlarms.Sort((x, y) => ((Belimed.Alarm.HistoricalAlarmItem)x).TimeStamp.CompareTo(((Belimed.Alarm.HistoricalAlarmItem)y).TimeStamp)); 

是否有可能时间戳转换为新DateTime对象进行排序的功能不能忽视上午和下午?请记住,在列表中的对象也需要转换为另一种类型(不幸的是他们具有相同的名称)

这工作:

historicalAlarms.Sort((x, y) => ((Belimed.Alarm.HistoricalAlarmItem)x).ActivationTime.CompareTo(((Belimed.Alarm.HistoricalAlarmItem)y).ActivationTime)); 

这并不:

historicalAlarms.OrderBy(x => DateTime.Parse((Belimed.Alarm.HistoricalAlarmItem)x.TimeStamp)) 
+0

是的,你应该将字符串转换为日期时间并比较它们。 – Derek

+0

_“问题是,这个属性是一个字符串”_一个承认的错误是一半纠正。 –

回答

2

您可以使用OrderByDateTime.Parse来实现。

historicalAlarms = historicalAlarms 
    .OrderBy(value => DateTime.Parse(value.TimeStamp)) 
    .ToList(); 
+3

并将其分配回原始变量。 'OrderBy'不会修改原始列表,'Sort'就是。 –

+0

好,可能需要:historicalAlarms = historicalAlarms.OrderBy(value => DateTime.Parse(value.TimeStamp))。ToList(); – Derek

+0

我想你需要一个.ToList()结束? – Derek