그래서 WPF 의 표준 분류 또는 필터링부터 비헤이비어를 콤프로시테콜레스티언스 보기입니다 doesn& # 39, t 지원, 그렇다면 모범 사례가 될 이 문제를 해결하기 위한.

두 가지 이상의 서로 다른 유형의 객체에는 컬렉션. 그들을 하나로 결합할 수 및 필터링 컬렉션 (또는 필터링합니다 구현하십시오 비트링 정렬하려면 수동으로로 필요).

39, ve I& 방식 중 하나로 검토하고 있는 등 소수의 핵심 속성을 새 객체를 생성할 수 있는 내가 취합은 수준들과 수집 및 오버클로킹된 객체에는 각 유형에 대한 그녀의심장을 정렬할지 인스턴스에서는.

class MyCompositeObject
{
    enum           ObjectType;
    DateTime       CreatedDate;
    string         SomeAttribute;
    myObjectType1  Obj1;
    myObjectType2  Obj2;
{
class MyCompositeObjects : List<MyCompositeObject> { }

내 두 개체 컬렉션을 통해 새 복합 제작 후 루프 컬렉션. 분명히 조금 있지만, 이것은 한 무차별 대입 메서드로부터 협력할 것이라고 말했다. # 39; d 프레젠테이션이든 모든 기본 보기입니다 i& 분류 및 필터링부터 비헤이비어를 on my 새로운 복합 객체 데이터 수집 및 I&; d # 39 를 넣을 수 있어야 제대로 it 에 대한 내 목록에 저장된 항목 템플리트를 표시하십시오 유형에 따라 실제로 있는 복합 항목설명프로세서.

어떤 제안을 할 발생합니까 이 더 세련된 방식으로?

답변 3 개

업데이트: I found 훨씬 더 세련된 해결책:

class MyCompositeObject
{
    DateTime    CreatedDate;
    string      SomeAttribute;
    Object      Obj1;
{
class MyCompositeObjects : List<MyCompositeObject> { }

I found 인해 반사, 특정 유형을 저장됩니까 해결됨으로 Obj1 는 런타임 시 및 유형별 다타템플라테 적용되는 예상대로!

하지만 난 아직 i& # 39 m, WPF 로 매우 익숙한 이 슬라이드에서는 질문에 ',' 수집, 분류 및 필터링부터 List&lt T&gt.

&gt. (또는 필터링합니다 구현하십시오 비트링 정렬하려면 수동으로로 필요)

자신의 정렬함으로써 또는 필터 기능을 구현하는 투석실에다가 다시 생각해? 내 경험상 이 편리하게 사용할 수 있다. 아래 예제를 사용하여 정의할 수 있는 자신만의 방법을 쉽게 구현할 수 있는 클래스 또는 익명의 위임합니다 확장하지만 복잡한 정렬함으로써 또는 필터. 이런 속성을 가질 수도 있습니다) 및 필터 (filter) 를 구성하고 변경하십시오 클래스용 정렬하려면 무중단으로.

'List&lt 사용하여 T&gt 지저스 (Comparison&lt T>;;; 비교) '을 (를) 사용자 정의 비교하십시오 기능:

// Sort according to the value of SomeAttribute
List<MyCompositeObject> myList = ...;
myList.Sort(delegate(MyCompositeObject a, MyCompositeObject b) 
{
    // return -1 if a < b
    // return 0 if a == b
    // return 1 if a > b
    return a.SomeAttribute.CompareTo(b.SomeAttribute);
};

하위 컬렉션 받기 위한 유사한 접근 방식을 통해 명단요 항목

'List&lt 사용하여 T&gt 스핀돌라 (Predicate&lt T>;;; 일치) '을 (를) 필터 기능을 통해 사용자 정의:

// Select all objects where myObjectType1 and myObjectType2 are not null
myList.FindAll(delegate(MyCompositeObject a)
{
    // return true to include 'a' in the sub-collection
    return (a.myObjectType1 != null) && (a.myObjectType2 != null);
}

Christopher Scott
그는 11년 전 댓글을 달았습니다
0

브라이언: 저도 한 번 편차란 마이콩파시테로비치 일부로, 분류 및 필터링부터 무료로 이콜레스티오노비예프. 이 문제를 다루는 별도의 개체 유형 수집 및 처리 남십자자리 솔리드로 원-부트 뜻한다. 합성 컬렉션은 만드는 데 사용할 수 없지만 그 수집, 분류 필터링합니다.

강력한 &quot force"; 실제로 방법을 언급하십시오 적합 마음 당신은 모든 개체는 RAM 의 I / O 병목 현상이 거의 없다고 할 수 있도록 정렬하려면 및 필터 (filter) 이내에 있는 수백만 객체에는 두 번째 현대 넓혀드립니다.

이 방법이 가장 세련된 작동합니까 시스템드링크 이름공간이 .NET 3.5 의 컬렉션

&gt. 내가 잘 할 수 있다 - LINQ &gt. 그러나 나의 염려사항 손실됩니다 객체에는 있습니다 &gt. 유연성을 위한 데이터 입력되었는지 &gt. 템플릿일 데릭쉐퍼드와 있는 표시하십시오. &gt. 내 객체에는 목록.

39 can& 경우, t 는 이 시점에 정렬하고 있다 사람들이 어떻게 수집, 다음 네 객체에는 필터링합니다 살펴봐야 합니다 이름공간이 시스템드링크스엑스프레시언스 구축해보십시오 람다 표현식 on demand) 를 실행 중에 (첫 번째 너회가 이제 사용자에게 구축하십시오 표현식에서는 관심용 컴파일하십시오 최종 결과를 통해 사용할 수 있도록 했고, 실행하십시오 반사 이름공간이 열거합니다.). 하지만 더 중요한 기능을 하지만 까다로운 it& # 39, 마무리를 지을 때 머리 주위에 비해 획기적인 기능을 더욱 LINQ, 아마도 (다는일은 명확히) 할 수 있다.

lubos hasko
Christopher Scott
그는 11년 전 댓글을 달았습니다
0

루보스: 감사합니다 - 난 또 할 수 있습니다, 하지만 내 염려사항 객체에는 LINQ 의 데이터 템플릿일 데릭쉐퍼드와 객체에는 표시하십시오 유연도를 손실됩니다 입력되었는지 있는 내 목록.