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 时它将被修复。任何人都可以解释这种行为吗?

4

2 回答 2

3

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

于 2012-05-29T07:21:30.367 回答
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 。在您的第二个示例中,它们是正确的方法,这就是正确排序的原因。

于 2012-06-02T08:28:01.860 回答