첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170
using System;
using System.Collections.Generic;
using System.Linq;

#region 객체 리스트 특정 속성 값에 따라 정렬하기 (속성 2개 이상 지정) - SortList(sourceList, propertyNameArray)

/// <summary>
/// 객체 리스트 특정 속성 값에 따라 정렬하기 (속성 2개 이상 지정)
/// </summary>
/// <param name="sourceList">소스 리스트</param>
/// <param name="propertyNameArray">속성명 배열</param>
/// <returns>정렬 객체 리스트</returns>
public List<object> SortList(List<object> sourceList, string[] propertyNameArray)
{
    if(sourceList == null || sourceList.Count == 0)
    {
        return null;
    }

    if(propertyNameArray.Length < 1)
    {
        return null;
    }

    Type sourceType = sourceList[0].GetType();

    var result = sourceList.OrderBy(p => sourceType.GetProperty(propertyNameArray[0]).GetValue(p, null));

    foreach(string colunmName in propertyNameArray.Skip(1))
    {
        result = result.ThenBy(p => sourceType.GetProperty(colunmName).GetValue(p, null)); // 또는 ThenByDescending
    }

    return result.ToList();
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요