从“join”查询中撰写实体对象

时间:2012-06-22 10:46:22

标签: c# entity-framework

我有这个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”......虽然它可以用于匿名类型......是否可以获得它?我知道我需要一个新的类类型并填充它,但这个更短。 谢谢, 萨维里奥

1 个答案:

答案 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 });