728x90
반응형
728x170
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
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 객체 리스트 특정 속성 값에 따라 정렬하기 (속성 2개 이상 지정) (0) | 2016.01.02 |
---|---|
[C#/COMMON] 객체 리스트 특정 속성 값에 따라 정렬하기 (속성 1개만 지정) (0) | 2016.01.02 |
[C#/COMMON] 객체 컬렉션 특정 객체 속성 값의 집합 구하기 (속성 2개 이상 지정 가능) (0) | 2016.01.02 |
[C#/COMMON] 객체 리스트 특정 객체 속성 값의 집합 구하기 (속성 2개 이상 지정 가능) (0) | 2016.01.02 |
[C#/COMMON] Nullable 타입 여부 구하기 (0) | 2016.01.01 |
[C#/COMMON] 객체 컬렉션 특정 객체 속성 값의 집합 구하기 (속성 1개만 지정) (0) | 2015.12.19 |
[C#/COMMON] Null Coalescing 연산자 사용하기 (0) | 2015.12.16 |
[C#/COMMON] 정규 분포 정렬 리스트 구하기 (0) | 2015.12.15 |
[C#/COMMON] 히스토그램 정렬 리스트 구하기 (0) | 2015.12.15 |
[C#/COMMON] 표준 편차 구하기 (0) | 2015.12.15 |
[C#/COMMON] 분산 구하기 (0) | 2015.12.15 |
댓글을 달아 주세요