6
var transactions = from t in context.Transactions 
           group t.Create_Date_Time by t.Participation_Id 
            into t1 
            select new { ParticipationId = t1.Key, CreateDateTime = t1.Max() }; 

      var cases = from c in context.Cases 
         group c.Create_Date_Time by c.Participation_Id 
          into c1 
          select new { ParticipationId = c1.Key, CreateDateTime = c1.Max() }; 

      var interactions = (from i in context.Interactions 
           join pp in context.Party_Participation on i.Party_Id equals pp.Party_Id 
           group i.Last_Update_Date_Time.HasValue ? i.Last_Update_Date_Time : i.Create_Date_Time by 
            pp.Participation_Id 
           into i1 
           select new {ParticipationId = i1.Key, CreateDateTime = i1.Max()}).AsQueryable(); 
위의 코드를 고려하면 다음과 같이 작동합니다.

Linq.ParallelQuery를 Linq.IQueryable로 변환하는 방법

transactions.Union(cases); 

그러나 다음은 작동하지 않습니다.

transactions.Union(interactions); 

트랜잭션과 케이스가 둘 다 Linq.IQueryable를 반환하지만 마지막 Linq.ParallelQueryLinq.ParallelQuery이므로 다른 테이블.

기본적으로 Union을 만들기 위해이 기능이 필요합니다. interactions.Union(transactions) 또는 transactions.Union(interactions) 다른 하나.

+0

interaction.Union (거래)을 시도 했습니까? –

+0

@KIvanov가 작동하지 않습니다. – Elangesh

+0

상호 작용을 시도하십시오 .Union (transactions.AsEnumerable()); –

답변

1

내 대답이 올바르지 않을 수 있습니다 그러나 나는 다음과 같은 문제에 대한 primarly이 질문을 제기했다. LINQ to Entities Union is throwing an error.

diceguyd30에서 환상적인 답장을 발견했으며 문제가 해결되었습니다. 그러므로 나는 이전 질문에 대한 대답으로이 질문을 끝내고있다.

0
interactions.Union(transactions.AsEnumerable()); 

IQueryable이고 두번째 및 transactionscases 익명의 유형이 동일하다 IEnumerable

Queryable.Union<TSource> Method (IQueryable<TSource>, IEnumerable<TSource>) 
+0

@K Ivanov, 아니요. 다음 오류가 발생합니다. 오류 인스턴스 인수 :에서 변환 할 수 없습니다 'System.Linq.IQueryable ' 'System.Linq.ParallelQuery ' 오류 'System.Linq.IQueryable <에 AnonymousType # 1> '에는'Union '에 대한 정의가없고 가장 좋은 확장 메서드 인'System.Linq.ParallelEnumerable.Union (System.Linq.ParallelQuery , System.Collections.Generic.IEnumerable ) '에 잘못된 인수가 있습니다. – Elangesh

+0

.AsEnumerable()이있는 prob는 쿼리를 실행하고 모든 데이터를 가져옵니다. –

+0

아니오 방금 테스트 용도로 사용했습니다. – Elangesh

1

이다. 익명 유형 interactions입니다.입니다!

따라서 해결책은 익명 유형을 동일하게 만드는 방식으로 select입니다. 따라서 사용자 고유의 유형을 작성하거나 선택 제품의 특성을 동일한 유형으로 변환하십시오. 이 같은

뭔가 모든 선택에 대해 동일한 익명 형식을 생성한다 :이 질문에 대한

select new { ParticipationId = (int)c1.Key, CreateDateTime = (DateTime)c1.Max() } 
관련 문제