이 기사에서는 사용자 정의 IComparer
제시된 시나리오에는 "200906/1" 형식의 InvoiceNumber 속성이 있는 개체가 포함된 일반 목록이 포함됩니다. 목표는 InvoiceNumber 속성 내의 숫자 값을 고려하는 사용자 정의 정렬 논리에 따라 이 목록을 정렬하는 것입니다.
처음에는 사용자 정의 IComparer
수정된 MyComparer 구현은 다음과 같습니다.
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 stringA.ToString().CompareTo(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])); } } }
ApplySortCore MyComparer를 활용하도록 메소드가 수정되었습니다.
case ListSortDirection.Ascending: MyComparer comparer = new MyComparer(); items = items.OrderByDescending( x => property.GetValue(x), comparer).ToList(); break;
마지막으로 정렬된 목록은 바인딩된 목록에 반영되며, 업데이트된 항목 컬렉션은 Items 속성에 할당되어야 합니다:
this.Items = items;
위 내용은 LINQ OrderBy와 함께 사용자 지정 IComparer를 사용하여 목록을 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!