Entity framework core 从子查询中选择,而不从另一个上下文对象开始

Entity framework core 从子查询中选择,而不从另一个上下文对象开始,entity-framework-core,subquery,asp.net-core-webapi,maximo,Entity Framework Core,Subquery,Asp.net Core Webapi,Maximo,我尝试在netCore 2.2-EF Core中复制以下MSSQL查询: SELECT wonum, MIN(requestdate) AS startdate, MAX(requestdate) AS enddate, MIN(laborcode) FROM ( SELECT wo.wonum, sw.requestdate, wo.wolablnk AS 'la

我尝试在netCore 2.2-EF Core中复制以下MSSQL查询:

SELECT
wonum,
MIN(requestdate)        AS startdate,
MAX(requestdate)        AS enddate,
MIN(laborcode)
FROM
    (
        SELECT
            wo.wonum,
            sw.requestdate,
            wo.wolablnk     AS 'laborcode'
        FROM
            DB1.dbo.web_users           wu  INNER JOIN
            DB2.dbo.workorder           wo on
            wu.laborcode = wo.wolablnk          INNER JOIN
            DB2.dbo.sw_specialrequest   sw  on
            wo.wonum = sw.wonum
    WHERE
            wo.status           in ('LAPPR', 'APPR', 'REC') AND
            sw.requestdate      > GETDATE()
    ) a   
GROUP BY
   wonum
ORDER by
我已经构建并运行了子查询部分,但这让我陷入僵局:

        var workOrders = await _db1Context.Workorder
            .Where(r => r.Status == "LAPPR" || r.Status == "APPR" || r.Status == "REC")
            .ToListAsync();

        var specialRequests = await _db2Context.SwSpecialRequest
            .Where(r => r.Requestdate > DateTime.Now)
            .ToListAsync();

        var subQuery = (from webUser in webUsers
                        join workOrder in workOrders on webUser.Laborcode equals workOrder.Wolablnk
                        join specialRequest in specialRequests on workOrder.Wonum equals specialRequest.Wonum
                        orderby webUser.Laborcode, specialRequest.Requestdate, specialRequest.Wonum
                        select new { workOrder.Wonum, Laborcode = workOrder.Wolablnk, specialRequest.Requestdate, workOrder.Workorderid })
                        .ToList();
我不确定如何使用我构建的子查询启动我需要的查询,甚至不确定我是否在正确的轨道上。我看了几个其他的例子,但我不明白

有没有人能解释一下这个问题并提供帮助


谢谢大家!

编写与SQL相同的LINQ查询,不要与
toListSync()
混合使用。在
toListSync()之后,
查询被发送到服务器。此外,对于此类查询,您应该只使用一个
DbContext

var webUsers=\u db1Context.Webuser;
var workOrders=\u db1Context.Workorder
其中(r=>r.Status==“LAPPR”| | r.Status==“APPR”| | r.Status==“REC”);
var specialRequests=_db1Context.swspecialrequests
.Where(r=>r.Requestdate>DateTime.Now);
变量子查询=
从webUser到webUsers
在webUser上的workOrder中加入workOrder。Laborcode等于workOrder.WolabLink
在工单上的特殊要求中加入特殊要求。Wonum等于特殊要求。Wonum
选择新的
{ 
工作订单,沃纳姆,
Laborcode=workOrder.Wolablnk,
特殊请求。请求日期
};
var resultQuery=
从子查询中的
a组由a.Wonum改为g组
选择新的
{
Wonum=g.键,
StartDate=g.Min(x=>x.Requestdate),
EndDate=g.Max(x=>x.Requestdate),
Laborcode=g.Min(x=>x.Laborcode)
};
//最终物化
var result=await resultQuery.ToListAsync();

帮自己一个忙,先创建一个合适的类模型。使用导航属性,因此您不需要手动连接,并获得大量的表达能力。并展示课堂模型。谢谢你和我对模型的看法!有时候我在学习的时候不会从模特开始,也许我应该这样做。这肯定会使求助请求更容易理解。老实说,一开始我没有考虑过导航道具,我很乐意使用这种方法。这是一个微服务系统,有3个独立的数据库跨2个独立的数据库服务器-表不是全部链接在1个数据库或甚至服务器中-可能会创建一个带有nav道具的类来表示这一点,但我还不知道。再次感谢,我将研究各种可能性并在完成后构建类!谢谢你,现在就完成这项工作。我有三个独立的数据库,一个在数据库服务器上使用代码,另一个在第二个数据库服务器上使用数据库。我不确定如何使用该模型,或者是否可以使用该模型,但我会研究它并感谢您的帮助-关于何时使用ToListSync()的部分是super@ogg130,您无法使用EF Core.interest创建跨数据库查询。非常感谢。