在List <t> .Sort

时间:2017-07-10 12:10:38

标签: c# sorting

所以我有一个包含对象的列表。这些对象具有属性TimeStamp。问题是,这个属性是一个字符串。现在,当通过TimeStamp对列表进行排序时,sort函数会忽略&#34; AM&#34;和&#34; PM&#34;

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

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

是否可以将TimeStamp转换为新的DateTime对象以使Sort函数不忽略AM和PM?请记住,List中的对象也需要转换为另一种类型(不幸的是它们具有相同的名称)

这有效:

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

1 个答案:

答案 0 :(得分:2)

您可以使用OrderByDateTime.Parse来实现这一目标。

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