2012-05-29 42 views
0

我有以下代碼列表排序正確

List<TimeZoneInfo> timeZoneList = new List<TimeZoneInfo>(TimeZoneInfo.GetSystemTimeZones()); 
timeZoneList.Sort((item1, item2) => { return string.Compare(item2.Id, item1.Id); }); 

但它並沒有在列表正確排序。 (使用linq.OrderBy()產生相同的結果)。
但以下代碼正確排序。

List<string> timeZoneList1 = new List<string>(); 
foreach (TimeZoneInfo timeZoneInfo in TimeZoneInfo.GetSystemTimeZones()) 
      timeZoneList1.Add(timeZoneInfo.Id); 
timeZoneList1.Sort((item1, item2) => { return string.Compare(item1, item2); }); 

有什麼問題?我錯過了什麼?

真的嗎?
沒有人知道答案?

---------------------------編輯------------------ ------------------
當我將列表分配給組合框時,它將以錯誤的順序出現,但當我設置組合框的DisplayMember時它將被固定。任何人都可以解釋這種行爲嗎?

回答

3

您已在比較函數中交換了item1和item2的順序。

+0

我不這樣。請添加代碼並查看結果。那麼解決方案是什麼? – Rzassar

0

在你的第一個例子中,你有下面這行:

timeZoneList.Sort((item1, item2) => { return string.Compare(item2.Id, item1.Id); }); 

如果不是這樣:

timeZoneList.Sort((item1, item2) => { return string.Compare(item1.Id, item2.Id); }); 

你必須在string.Compare方法的項目標識周圍的錯誤。在你的第一個例子。在你的第二個例子中,他們是正確的解決方法,這就是爲什麼這種排序正確。

+0

至少它應該命令列表顛倒,意味着它將列表完全散列。 (請閱讀編輯的問題) – Rzassar