2011-03-08 4 views
11

두 개의 서로 다른 두 개의 데이터베이스가 있는데 두 개의 테이블이 완전히 똑같은 디자인입니다. 이 두 쿼리의 결과를 가장 효율적으로 결합하려면 어떻게합니까? 나는 각각의 결과를 사전이나 배열 등으로 넣을 수 있다는 것을 알고 있지만, 이것을하기위한 더 쉬운 방법이 있다고 생각하고 싶습니다.두 개의 Linq 쿼리 결과를 단일 변수에 결합 하시겠습니까?

var db1 = //A database object connected to database1 
var db2 = //A database object connected to database2 

var result1 = db1.table.where(a=>a.value>0); 
var result2 = db2.table.where(a=>a.value>0); 

var resultSum = result1+result2; //??? 

고마워요!

부록 : Concat 또는 Union,이 특별한 경우에 더 좋으며 그 이유는 무엇입니까? 감사! externsion 메서드 구문을 사용하여

+1

당신이'Concat'을 시도 했습니까? –

답변

22

당신은, 당신은 일반적인 클래스에 모두를 투영 할 수있는 동일한 유형의 열거를 결합하고이를 연결할 수 있습니다 :

var result1 = db1.table.Where(a=>a.value>0).Select(x=> new Foo() { /*set props*/ }); 
var result2 = db2.table.Where(a=>a.value>0).Select(x=> new Foo() { /*set props*/ }); 

var resultSum = result1.Concat(result2); 
+0

이 경우에는 concat이 union보다 나은가요? – sooprise

+2

'Union'은 중복을 제거하고 귀하의 케이스에 적용하지 않는 것 같습니다 – BrokenGlass

3
var resultUnion = Enumerable.Union(result1, result2) 

또는,

var resultUnion = result1.Union(result2); 
+0

어떻습니까? var resultUnion = Enumerable.Union (db1.table.where (blah), db2.table.where (blah))? 감사합니다 – sooprise

+0

@sooprise 물론 당신도 할 수 있어요, 똑같습니다! –

+0

물론 "더 나은 표준"환경 설정이 있습니까? – sooprise

0

UnionIntersect 연산자를 살펴 봐야합니다.

+0

Union 또는 Concat가 더 낫습니다. – sooprise

+0

Concat이 고유 값 (중복)을 제거하지 않는다는 유일한 차이점이 있기를 기대합니다. 따라서 SQL 용어로 Union All이 생성 될 수 있습니다. – Reddog

3

이 작업을 수행하는 가장 좋은 방법은 CONCAT 함께 :

var resultingEnumerable = result1.Concat(result2); 
관련 문제