汎用 List
コードには 2 つの問題があります:
修正されたカスタム比較子は次のとおりです。
public class MyComparer : IComparer<Object> { public int Compare(Object stringA, Object stringB) { string[] valueA = stringA.ToString().Split('/'); string[] valueB = stringB.ToString().Split('/'); if (valueA.Length != 2 || valueB.Length != 2) { return String.Compare(stringA.ToString(), stringB.ToString()); } // Note: do error checking and consider i18n issues too :) if (valueA[0] == valueB[0]) { return int.Parse(valueA[1]).CompareTo(int.Parse(valueB[1])); } else { return int.Parse(valueA[0]).CompareTo(int.Parse(valueB[0])); } } }
そして、ここにあります。 BindingList
case ListSortDirection.Ascending: MyComparer comparer = new MyComparer(); items = items.OrderByDescending(x => property.GetValue(x), comparer).ToList(); break; default: // Handle descending sort direction here break; } this.Items = items;
以上がLinq OrderBy でカスタム IComparer を使用してリストを正しく並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。