첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 객체 컬렉션 특정 속성 값에 따라 정렬하기 (속성 2개 이상 지정 가능)

------------------------------------------------------------------------------------------------------------------------

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

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요