2011-09-24 5 views
3

Silverlight에서 만든 두 개의 컬렉션이 있습니다. 각 컬렉션은 서로 다른 방법으로 별도의 시간에 만들어집니다.두 개의 컬렉션을 하나로 병합하는 방법

방법 1 목록 <>라는 제목의 사람 (이름 필드를 포함, 성 연령) (2) 목록 <을 만들어

방법을 만듭니다>라는 제목의 전화

는 (전화 번호, 휴대폰 번호 포함)이 있습니까 SL 내에서이 두 목록을 하나의 컬렉션으로 결합하여 표시 할보기에 바인딩 할 수있는 방법?

예 : 당신은 Zip 기능을 찾고

+0

두리스트 사이의 관계, 즉 공통 키, 순차 순서는 무엇인가? –

+0

관련 ID로 참조 된 objectId가 있습니다. 이 점은 데이터베이스가 파괴 된 것이므로 필드 레벨에서 직접적인 관계 링크가 설정되어 있지 않습니다. 나는 데이터가 alwasy 1 : 1이라고 생각할 수 있습니다. 따라서 방법 1이 발생하면 방법 2가 뒤 따르고 Alwasy는 결과가 관련되어 있다는 것을 알고 있습니다. 난 그냥 하나의 컬렉션으로 그들을 병합해야 – rlcrews

+0

@ JaredPar의 대답은 당신을 위해 일해야한다고 생각합니다. –

답변

4

모든 속성을 포함 모음 (이름, 성 연령, 전화 번호, 휴대폰 번호)로 결합. 그것은 당신이 eache의 요소들을 결합함으로써 하나의 모음으로 2 개의 모음을 결합 할 수있게합니다.

List<Type1> col1 = ...; 
List<Type2> col2 = ...; 
var combined = col1.Zip(col2, (x, y) => new { 
    FirstName = x.FirstName, 
    LastName = x.LastName, 
    PhoneNumber = y.PhoneNumber, 
    CellNumber = y.CellNumber }); 

Zip을 Silverlight에서 사용할 수 없는지 확실하지 않습니다. 그렇지 않다면 여기에 그것의 정의가있다.

public static IEnumerable<TRet> Zip<T1, T2, TRet>(
    this IEnumerable<T1> enumerable1, 
    IEnumerable<T2> enumreable2, 
    Func<T1, T2, TRet> func) { 

    using (var e1 = enumerable1.GetEnumerator()) { 
    using (var e2 = enumerable2.GetEnumerator()) { 
     while (e1.MoveNext() && e2.MoveNext()) { 
     yield return func(e1.Current, e2.Current); 
     } 
    } 
    } 
} 
+0

Thankss JaredPar Zip은 SL에서 작동합니다. 이 추상적 인 유형을 뷰로 승격시킬 수있는 컬렉션으로 다시 변환하는 방법에 대한 간단한 팁이 있습니까? – rlcrews

관련 문제