我有这个Linq查询,我试图简化:
List<A> LR = (from a in ent.A
join b in ent.B on a.ID equals b.idarticle
join c in ent.C on b.idB equals c.id
select new A()
{ name=a.name, surname = c.surname
}).toList();
用几句话我需要一个取自表C的A字段(通过交叉表B),这样来自A的'name'和来自C的'surname'构成一个新的A.
但我得到“无法构建实体类型A”......虽然它可以用于匿名类型......是否可以获得它?我知道我需要一个新的类类型并填充它,但这个更短。 谢谢, 萨维里奥
答案 0 :(得分:2)
该错误可能与实体框架中的限制有关。所以你可以让ef返回匿名对象,然后将其转换为List<A>
List<A> LR = (from a in ent.A
join b in ent.B on a.ID equals b.idarticle
join c in ent.C on b.idB equals c.id
select new
{ name=a.name, surname = c.surname
})toList().Select(anon => new A() { name=anon.name, surname = anon.surname });