2

다음 두 개의 동일한 테이블 쿼리가 병합해야합니다.두 개의 쿼리 결과 병합

var Prod = this.UnitOfWork.myRepository.GetData(); 
var PreProd = this.UnitOfWork.myRepository.GetData(); 

var Merge = Prod.Union(PreProd); 

그러나 나는 다음과 같은 메시지가 연합을 표시하지 않습니다 병합의 결과 만 쇼를 확인할 때

메시지 :이 방법은 LINQ는 엔티티 인프라를 작동하지 결과 연합 (EU)을 조회하기 위해 지원하고 것은 아니다 사용할 코드

코드를 직접 사용하여 을 사용할 수 있습니다.

+1

무엇 생산성 및 PreProd에 대한 질의 결과의 유형? 그것은 IQuerable 무엇입니까? 이 링크를 확인하십시오. http://social.msdn.microsoft.com/Forums/en-US/3962b925-fe1e-4b96-ade3-5cb3b4be4511/compiledquery-exception-this-method-supports-linq-to-entity-infrastructure -and-not-to-to- –

+0

예 IQueryable입니다. – InTheWorldOfCodingApplications

답변

4

.AsEnumerable()을 사용하여 IQueryable을 IEnumerable로 먼저 변환 할 수 있습니다.

IQueryable<TSource> Union<TSource>(
this IQueryable<TSource> source1, 
IEnumerable<TSource> source2 
) 

그렇게하려고 : EF에

var Prod = this.UnitOfWork.myRepository.GetData().AsEnumerable(); 
var PreProd = this.UnitOfWork.myRepository.GetData().AsEnumerable(); 

var Merge = Prod.Union(PreProd); 
+0

'Union'은 [EF에서 지원됩니다] (http://msdn.microsoft.com/en-us/library/bb738550.aspx) ieQueryable –

+0

This Worked . 왜 우리가 IEnumerable로 변환해야하는지 모르겠다. – InTheWorldOfCodingApplications

+0

IEnumerable로 변환 할 필요가 없다고 생각한다. 내 대답을 보라. –

1

LINQ는 Union을 지원

var Prod = this.UnitOfWork.myRepository.GetData(); 
var PreProd = this.UnitOfWork.myRepository.GetData(); 

var Merge = Prod.Union(PreProd.AsEnumerable());