2011-08-10 38 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. 

我我看過其他的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

啊,那工作。非常感謝!另外,我發現我的問題是什麼。我將它映射到一個實體框架對象,顯然你不能在ADO.NET中做到這一點。見http://stackoverflow.com/questions/5325797/the-entity-cannot-be-constructed-in-a-linq-to-entities-query –