LINQ查询无法将数据选择到自定义类对象中

时间:2011-08-10 15:12:54

标签: asp.net 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查询,但我不知道为什么我的查询无效。有什么见解吗?

1 个答案:

答案 0 :(得分: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();