列表排序不正确

时间:2012-05-29 07:13:15

标签: c# list sorting

我有以下代码

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

有什么问题?我错过了什么?

真的?
没有人知道答案?

---------------------------编辑------------------- -----------------
当我将列表分配给组合框时,它将以错误的顺序出现,但是当我设置Combobox的DisplayMember时它将被修复。任何人都可以解释这种行为吗?

2 个答案:

答案 0 :(得分:3)

您已在比较函数中交换了item1和item2的顺序。

答案 1 :(得分: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方法中的项ID是错误的。在你的第二个例子中,他们是正确的方法,这就是正确排序的原因。