첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
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
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요