2014-02-20 3 views
3

첫 번째로 사과드립니다. 결과가 나올 수있는 모든 구문을 검색했지만 답을 찾거나 내 검색 용어를 일관되게 구성하는 데 어려움을 겪었습니다.일치하는 ID가 일치하는 객체에만 적용

// Collection 1 
[0] = 1st, TypeA, 3 
[1] = 2nd, TypeA, 3 
[2] = 1st, TypeB, 57 
[3] = 2nd, TypeB, 57 

// Collection 2 
[0] = 3rd, TypeB, 57 
[1] = 4th, TypeB, 58 
:

나는 컬렉션 1 개체 A의 컬렉션 (2)가 수집 한 2 종류와 컬렉션 2 두번째로 날짜 1 일을 포함

// Object A Structure 
Date 
Type 
Value 

1 개 유형 4에 3 날짜를 다루고있다

원래 두 가지 컬렉션을 결합해야했습니다. 아니 문제 : 나는있을거야

// Result Collection 
[0] = 1st, TypeB, 57 
[1] = 2nd, TypeB, 57 
[2] = 3rd, TypeB, 57 
[3] = 4th, TypeB, 58 

그러나

var result = collection1.Union(collection2); 

, 지금은 유형이 컬렉션이 존재하지 않는 두 컬렉션 그러나 컬렉션 1에서 제외 개체를 결합하고 싶습니다 간단한 (잘하면 linq) 한 줄 솔루션을하지만 난 그냥 내 머리가 기어 무엇인지 알아낼 수 없습니다.

// Get distinct Types from Collection 2 
var typesToInclude = collection2.GroupBy(c => c.Type).Select(group => group.First().Type); 

var result = collection2.Union(collection1.Where(c => typesToInclude.Contains(c.Type))); 

하지만 정말 투박하고 기본적으로 다음과 같은

var result = collection1 
    .Where(x => collection2.Any(c => c.Type == x.Type)) 
    .Union(collection2); 

을 시도 :(최적의

답변

7

하지 느낌 :

가장 좋은 (두 줄)

내가 지금까지있어입니다 첫 번째로 collection1Type 값의 항목으로 내 보낸 다음 collection2 값을 가진 다음 유니온 작업을 실행하십시오.

+0

Ahhhhhhhh Any! 그것은 나에게 새로운 것조차 아니다, 나무를위한 나무를 볼 수 없었다 :) 많은 감사 Jared, 나는 또한 순서를 선호한다, 조합 내의 곳에 embedding보다는 더 좋게 본다. – thudbutt

관련 문제