Sie haben eine generische List
Es gibt zwei Probleme in Ihrem Code:
Hier ist der korrigierte benutzerdefinierte Vergleicher:
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])); } } }
Und hier ist der korrigierte Code zum Aktualisieren der 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;
Das obige ist der detaillierte Inhalt vonWie sortiere ich eine Liste mit einem benutzerdefinierten IComparer mit Linq OrderBy richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!