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

■ 객체 컬렉션의 특정 객체 속성 값의 집합 구하기 (속성 1개만 지정)

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

using System;

using System.ComponentModel;

using System.Collections;

using System.Collections.ObjectModel;

using System.Linq;

 

#region 객체 컬렉션의 특정 객체 속성 값의 집합 구하기 - GetDistinctValueCollection(sourceCollection, propertyName)

 

/// <summary>

/// 객체 컬렉션의 특정 객체 속성 값의 집합 구하기

/// </summary>

/// <param name="sourceCollection">소스 컬렉션</param>

/// <param name="propertyName">속성명</param>

/// <returns>중복 값 제거 컬렉션</returns>

public ObservableCollection<object> GetDistinctValueCollection(ObservableCollection<object> sourceCollection,

    string propertyName)

{

    ObservableCollection<object> targetCollection = new ObservableCollection<object>();

 

    if(sourceCollection.Count == 0)

    {

        return targetCollection;

    }

 

    var sourceItem = sourceCollection.First();

 

    PropertyDescriptorCollection propertyDescriptorCollection = TypeDescriptor.GetProperties(sourceItem);

 

    PropertyDescriptor propertyDescriptor = propertyDescriptorCollection[propertyName];

 

    var result = sourceCollection.GroupBy(p => propertyDescriptor.GetValue(p))

                 .Select(p => p.FirstOrDefault())

                 .OrderBy(p => propertyDescriptor.GetValue(p));

 

    foreach(var item in result)

    {

        targetCollection.Add(propertyDescriptor.GetValue(item));

    }

 

    return targetCollection;

}

 

#endregion

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

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요