c#实体框架-查询和连接多个表/实体

c#实体框架-查询和连接多个表/实体,c#,mysql,entity-framework,rest,entity-framework-core,C#,Mysql,Entity Framework,Rest,Entity Framework Core,假设我有以下表格(具有类似形式的模型,加上一些虚拟道具) 表1:“代理公司”(仅将代理ID链接到公司) 代理公司ID、代理公司ID、公司ID 表2:“公司” 公司ID,国家ID 表3:“国家” 国名 AgentCompany的模型具有“公司”的虚拟财产,“公司”的模型也具有虚拟“国家”财产 我的查询当前看起来像 var res=(来自Repo.AgentCompany中的ap 在回购中加入p。公司在ap.CompanyId上等于p.CompanyId 将c加入ap.Country.Name上的回

假设我有以下表格(具有类似形式的模型,加上一些虚拟道具)

表1:“代理公司”(仅将代理ID链接到公司)
代理公司ID、代理公司ID、公司ID

表2:“公司”
公司ID,国家ID

表3:“国家”
国名

AgentCompany的模型具有“公司”的虚拟财产,“公司”的模型也具有虚拟“国家”财产

我的查询当前看起来像

var res=(来自Repo.AgentCompany中的ap
在回购中加入p。公司在ap.CompanyId上等于p.CompanyId
将c加入ap.Country.Name上的回购国等于c.Name
其中ap.AgentId==AgentFilter
选择新代理公司
{
公司=p
});
这是可行的,我得到了我所有的数据,除了公司(p)的国家为空。 我想弄清楚如何使用这种语法,因为我可以像上面显示的c一样查询国家,我想要p.country=c,所以在我的AgentCompany对象结果中,公司属性是实际的公司,公司的虚拟国家属性指向一个国家对象

有人知道我如何做到这一点吗?我尝试了一些问题搜索,并尝试了一些与内部联接或“Include”方法相关的建议,但我一直无法实现我想要的结果


提前谢谢

“有了相似的模型,再加上一些虚拟道具”-我猜你是指导航属性(虚拟在这里没有什么关系),但它们是必不可少的-有了正确的导航属性,你不需要所有这些连接和选择。查询应该是简单的
AgentCompany.Include(ac=>ac.Company)。然后是Include(c=>c.Country)。Where(ac=>ac.AgentId==AgentFilter)
我没有使用syntax方法对不起,我没有在手机上完成该评论-在linq中有办法做到这一点吗?