Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 联接多个表时Linq查询出错_C#_Linq_Asp.net Mvc 4_Jqgrid - Fatal编程技术网

C# 联接多个表时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

我的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 = (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()基本上是将结果复制到内存集合中,您可以从中加入到其他内存集合中。但是,如果要连接到两个不同的数据库,那么最好将数据移动到一个数据库中。我不确定您在每个“表”上连接的源