2017-12-20 12 views
0

현재 ASP.NET 4.5 응용 프로그램에서 LINQ 쿼리를 작업하고 있습니다. 서로 다른 talble에서 2 개의리스트를 쿼리하고, 결과를 결합하고, 첫 번째 테이블의 데이터 유형에 대한 IQueryable을 리턴하려고합니다.C# 형식이 익명 개체 사이에 형식이 지정되지 않았습니다.

내 데이터베이스의 테이블에는 비슷한 필드가 있으므로 익명 개체를 선택하면됩니다.

내 쿼리는 다음과 같습니다

var coolStuff = ctx.CoolStuffTable.Select(x => new 
{ 
    PK = x.PK, 
    CreationDate = x.CreationDate, 
    ModificationDate = x.ModificationDate, 
    Titel = x.Title, 
    Visible = x.Visible 
}); 

var niceStuff = ctx.NiceStuffTable.Select(x => new 
{ 
    PK = x.PK, 
    CreationDate = x.CreationDate, 
    ModificationDate = x.ModificationDate, 
    Title = x.Title, 
    Visible = x.Visible 
}); 

var result = coolStuff.Union(nicelStuff) 
     .Where(i => i.Visible); 

var result = result.Cast<CoolStuffTable>(); // the LinqToSQL class of thable CoolStuffTable is also called CoolStuffTable 

그것은 그럼에도 불구하고 나는이 STRA

없음 강제 연산자 유형

물론

사이에 정의되어 있지 받고 있어요, 사실은 꽤 좋아 보인다, SQL 서버에서 뷰를 작성할 수 있지만 LINQ에서이 문제를 해결하고 싶습니다. ...

두 개의 서로 다른 테이블을 쿼리하고 이들을 결합하여 유형 1 (CoolStuffTable) 유형으로 리턴 하시겠습니까?

감사합니다.

+0

사용 투사처럼 다시 CoolStuffTable에 투사 할 필요가있다. 어쩌면 변환 방법을 쓸 수도 있습니다. 이 언어에는 오리 유형의 암시 적 캐스트 변환이 없습니다. –

답변

2

당신은

var result = coolStuff.Union(nicelStuff) 
         .Where(i => i.Visible) 
         .Select(s => new CoolStuffTable 
         { 
           PK = s.PK, 
           CreationDate = s.CreationDate, 
           ModificationDate = s.ModificationDate, 
           Title = s.Title, 
           Visible = s.Visible 
         });