C# 联接多个表时Linq查询出错
我的linq查询是:C# 联接多个表时Linq查询出错,c#,linq,asp.net-mvc-4,jqgrid,C#,Linq,Asp.net Mvc 4,Jqgrid,我的linq查询是: var query1 = (from grp in ctnx.tblGroupDatas group grp by grp.MeterID_FK into g let maxId = g.Max(gId => gId.GroupDataID) select new { metId = g.Key, maxId }); query2 = (f
var query1 = (from grp in ctnx.tblGroupDatas
group grp by grp.MeterID_FK into g
let maxId = g.Max(gId => gId.GroupDataID)
select new { metId = g.Key, maxId });
query2 = (from met in ctnx.tblMet
from mod in ctnx.tblMod.Where(mo => mo.ModID == met.Mod_FK).DefaultIfEmpty()
from grp in ctnx.tblGroupDatas.Where(gr => gr.Met_FK == met.MetID)
from group1 in db.tblMetRelateGroups.Where(x => x.Met_FK == met.MetID)
from q1 in query1.Where(q => q.metId == met.MetID && grp.GroupDataID == q.maxId)
where (group1.GroupMetID_FK == groupID)
select new
{
met.MetID,
mod.ModSerial,
met.MetSerial,
met.MetWaterSharingNo,
met.MetPowerSharingNo,
grp.GroupDate,
grp.GroupDataID
});
var gridobisdata = query2.OrderByDescending(m => m.GroupDate);
但这表明了一个错误:
指定的LINQ表达式包含对以下查询的引用:
与不同的上下文相关
您必须执行两个数据库查询:
db中的db
来自db中的group1。tblMetRelateGroups
您不能在单个linq2sql中耦合来自两个不同上下文的查询,除非它是内存操作。@Shaunak D db是“MetControl.Models.DomainModels.MetControlDBEntities db=new MetControlDBEntities();”Linq只能与来自同一上下文的数据连接。例如,数据库、数据文件、内存表、集合等。。。如果你试图跨越这些界限并将它们连接在一起,那么你就会看到错误。要解决此问题,必须将数据从一个上下文复制到其他上下文中。例如,您可以将数据库表向下查询到内存中的本地集合,然后加入到该新集合。或者反之亦然。看看这两个答案:通常类似于.ToArray()
或.ToList()代码>基本上是将结果复制到内存集合中,您可以从中加入到其他内存集合中。但是,如果要连接到两个不同的数据库,那么最好将数据移动到一个数据库中。我不确定您在每个“表”上连接的源