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

最初の例では、メソッド内のアイテム ID がstring.Compare間違っています。あなたの2番目の例では、それらは正しい方法です。そのため、正しくソートされます。

于 2012-06-02T08:28:01.860 に答える