我有以下代码
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时它将被修复。任何人都可以解释这种行为吗?
答案 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是错误的。在你的第二个例子中,他们是正确的方法,这就是正确排序的原因。