2011-08-10 3 views
1

그래서 아래에 LINQ 쿼리가 있습니다LINQ 쿼리는 사용자 정의 클래스 객체에 데이터를 선택할 수 없습니다

var data= (from p in _db.P 
      join t in _db.TP on 
      p.Id equals t.PId 
      select 
        new TPE{ 
          PId= t.PId, 
          TId= t.Id 
          } 
      ).ToList(); 

      return data; 

하지만 그것을 실행할 때, 그것은 나에게 오류 제공 :

The entity or complex type 'TPE' cannot be constructed in a LINQ to Entities query. 

I을 정확히이 일을하는 다른 LINQ 쿼리를 살펴 보았지만 내 쿼리가 작동하지 않는 이유를 모르겠습니다. 어떤 통찰력?

답변

6

여기에 가장 간단한 방법은 익명 형식으로 가져이며, 다음 AsEnumerable를 통해 나머지 프로세스를 수행

return (from p in _db.P 
     join t in _db.TP on p.Id equals t.PId 
     select new { t.PId, t.Id }).AsEnumerable() 
     .Select(x => new TPE { PId = x.PId, TId = x.Id }) 
     .ToList(); 

또는 모든 확장의 방법 구문 :

return _db.P.Join(_db.TP, p => p.Id, t => t.PId, 
       (p, t) => new { t.PId, t.Id }) 
      .AsEnumerable() 
      .Select(x => new TPE { PId = x.PId, TId = x.Id }) 
      .ToList(); 
+0

아, 작동 . 고마워요! 또한, 내 문제가 무엇인지 알아 냈습니다. Entity Framework 개체에 매핑하고 있었고 분명히 ADO.NET에서 그렇게 할 수 없습니다. http://stackoverflow.com/questions/5325797/the-entity-cannot-be-constructed-in-a-linq-to-entities-query를 참조하십시오. –

관련 문제