2017-07-10 23 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