■ 객체 컬렉션를 특정 속성 값에 따라 정렬하는 방법을 보여준다. (속성 2개 이상 지정 가능)
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using System; using System.Collections.ObjectModel; using System.Linq; #region 객체 컬렉션 특정 속성 값에 따라 정렬하기 (속성 2개 이상 지정 가능) - SortCollection(sourceCollection, propertyNameArray) /// <summary> /// 객체 컬렉션 특정 속성 값에 따라 정렬하기 (속성 2개 이상 지정 가능) /// </summary> /// <param name="sourceCollection">소스 컬렉션</param> /// <param name="propertyNameArray">속성명 배열</param> /// <returns>정렬 객체 컬렉션</returns> public ObservableCollection<object> SortCollection(ObservableCollection<object> sourceCollection, string[] propertyNameArray) { if(sourceCollection == null || sourceCollection.Count == 0) { return null; } if(propertyNameArray.Length < 1) { return null; } Type sourceType = sourceCollection[0].GetType(); var result = sourceCollection.OrderBy(p => sourceType.GetProperty(propertyNameArray[0]).GetValue(p, null)); foreach(string columnName in propertyNameArray.Skip(1)) { result = result.ThenBy(p => sourceType.GetProperty(columnName).GetValue(p, null)); // 또는 ThenByDescending } return new ObservableCollection<object>(result); } #endregion |