如何将linq中的两个表连接到实体

时间:2013-12-03 05:06:15

标签: entity-framework

我在linq中使用内部连接到实体。我必须选择两个表的所有列,而不是手动逐个列。下面是我的查询请看最后一行代码,我只能选择c1但不能选择c2。我怎样才能将c1和c2结合起来???,提前致谢

using (var db = new POSContext())
{
    var query = (from c1 in db.LineMaster
                 join c2 in db.LineDetail on c1.OrderId equals c2.OrderId
                 where c1.OrderId == 123
                 select c1).ToList();
}

1 个答案:

答案 0 :(得分:2)

当您仅选择c1或c2时,EF会根据所选记录创建匿名对象。在这种情况下,当您尝试选择c1和c2时,EF无法创建匿名对象。您应该手动创建自己的Model或anonimus对象:

using (var db = new POSContext())
{
    var query = (from c1 in db.LineMaster
                join c2 in db.LineDetail on c1.OrderId equals c2.OrderId
                where c1.OrderId == 123
                select new 
                    {
                         IdC1 = c1.Id,
                         IdC2 = c2.Id,
                         // etc...  
                    }).ToList();
 }