Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.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# 在c的linq查询中获取多个连接时出错_C#_Linq_Entity Framework - Fatal编程技术网

C# 在c的linq查询中获取多个连接时出错

C# 在c的linq查询中获取多个连接时出错,c#,linq,entity-framework,C#,Linq,Entity Framework,下面指定的查询显示编译时的错误。它表示wfmilestoneprojectrel的名称不在equals右侧的范围内。考虑交换等式两边的表达式。 我如何解决这个问题? 请帮忙 var test = (from wfmilestonedefinition in _context.WF_MILESTONE_DEFINITION join wfmilestoneprojectrel in _context.WF_MILESTONE_PROJECT_REL on wfmil

下面指定的查询显示编译时的错误。它表示wfmilestoneprojectrel的名称不在equals右侧的范围内。考虑交换等式两边的表达式。 我如何解决这个问题? 请帮忙

var test = 
   (from wfmilestonedefinition in _context.WF_MILESTONE_DEFINITION
    join wfmilestoneprojectrel in _context.WF_MILESTONE_PROJECT_REL
        on wfmilestonedefinition.MILESTONE_ID equals wfmilestoneprojectrel.MILESTONE_ID
    join workflowrecord in _context.WORKFLOW_RECORD
        on wfmilestoneprojectrel.PROJECT_ID equals workflowrecord.PROJECT_ID
    join workflowmilestone in _context.WORKFLOW_MILESTONE
        on
        new
            {
                wfmilestoneprojectrel.MILESTONE_PROJECT_REL_ID,
                workflowrecord.WF_ID
            } equals
        new
            {
                MILESTONE_PROJECT_REL_ID = wfmilestoneprojectrel.MILESTONE_PROJECT_REL_ID,
                workflowmilestone.WF_ID
            }
    select workflowmilestone).ToList();
下面给出了运行良好的相关Sql查询: 选择dbo.WF\u里程碑\u定义.MILESTONE\u ID,dbo.WF\u里程碑\u定义.MILESTONE\u名称,dbo.WF\u里程碑\u项目\u REL.PROJECT\u ID, dbo.WORKFLOW\u RECORD.WF\u ID,dbo.WORKFLOW\u MILESTONE.MILESTONE\u E\u DATE 从dbo.WF\u里程碑\u定义内部联接 dbo.WF\u里程碑\u项目\u与dbo.WF\u里程碑\u定义相关。里程碑\u ID=dbo.WF\u里程碑\u项目\u相关。里程碑\u ID内部联接 dbo.WF\u里程碑上的dbo.WORKFLOW\u记录\u项目\u REL.PROJECT\u ID=dbo.WORKFLOW\u记录.PROJECT\u ID内部联接 dbo.WORKFLOW\u上的里程碑 dbo.WF_里程碑_项目_REL.millestone_项目_REL_ID=dbo.WF_里程碑_项目_REL.millestone_项目_REL_ID
dbo.WORKFLOW\u RECORD.WF\u ID=dbo.WORKFLOW\u MILESTONE.WF\u ID查看将在后台调用的联接方法的定义:

var test = 
   (from wfmilestonedefinition in _context.WF_MILESTONE_DEFINITION
    join wfmilestoneprojectrel in _context.WF_MILESTONE_PROJECT_REL
        on wfmilestonedefinition.MILESTONE_ID equals wfmilestoneprojectrel.MILESTONE_ID
    join workflowrecord in _context.WORKFLOW_RECORD
        on wfmilestoneprojectrel.PROJECT_ID equals workflowrecord.PROJECT_ID
    join workflowmilestone in _context.WORKFLOW_MILESTONE
        on
        new
            {
                wfmilestoneprojectrel.MILESTONE_PROJECT_REL_ID,
                workflowrecord.WF_ID
            } equals
        new
            {
                MILESTONE_PROJECT_REL_ID = wfmilestoneprojectrel.MILESTONE_PROJECT_REL_ID,
                workflowmilestone.WF_ID
            }
    select workflowmilestone).ToList();
Join<TOuter, TInner, TKey, TResult>(IEnumerable<TOuter>, 
                                    IEnumerable<TInner>, 
                                    Expression<Func<TOuter, TKey>>, 
                                    Expression<Func<TInner, TKey>>, 
                                    Expression<Func<TOuter, TInner, TResult>>)
为什么不写:

var test = 
   (from wfmilestonedefinition in _context.WF_MILESTONE_DEFINITION
    join wfmilestoneprojectrel in _context.WF_MILESTONE_PROJECT_REL
        on wfmilestonedefinition.MILESTONE_ID equals wfmilestoneprojectrel.MILESTONE_ID
    join workflowrecord in _context.WORKFLOW_RECORD
        on wfmilestoneprojectrel.PROJECT_ID equals workflowrecord.PROJECT_ID
    join workflowmilestone in _context.WORKFLOW_MILESTONE
        on
        new
            {
                wfmilestoneprojectrel.MILESTONE_PROJECT_REL_ID,
                workflowrecord.WF_ID
            } equals
        new
            {
                MILESTONE_PROJECT_REL_ID = wfmilestoneprojectrel.MILESTONE_PROJECT_REL_ID,
                workflowmilestone.WF_ID
            }
    select workflowmilestone).ToList();
join workflowmilestone in _context.WORKFLOW_MILESTONE
    on workflowrecord.WF_ID equals workflowmilestone.WF_ID

也许我误解了什么……/P>这部分考虑把“你不理解”的两边的表达交换起来吗?你试过了吗?是的我试过了。。但是不要工作。我从sql翻译了这个查询。sql查询也可以工作。鉴于OP在两个匿名对象中都使用了wfmilestoneprojectrel.MILESTONE\u PROJECT\u REL\u ID,我觉得它可以被删除……感谢@Alexey的反馈,但我需要在OnQuery的两个站点中都使用wfmilestoneprojectrel.MILESTONE\u PROJECT\u REL\u ID,因为它会根据我的需要过滤一些数据输出。如果我想要我的方式,请帮助我,然后我如何才能做到这一点?只要看一下sql查询,你就能理解。
var test = 
   (from wfmilestonedefinition in _context.WF_MILESTONE_DEFINITION
    join wfmilestoneprojectrel in _context.WF_MILESTONE_PROJECT_REL
        on wfmilestonedefinition.MILESTONE_ID equals wfmilestoneprojectrel.MILESTONE_ID
    join workflowrecord in _context.WORKFLOW_RECORD
        on wfmilestoneprojectrel.PROJECT_ID equals workflowrecord.PROJECT_ID
    join workflowmilestone in _context.WORKFLOW_MILESTONE
        on
        new
            {
                wfmilestoneprojectrel.MILESTONE_PROJECT_REL_ID,
                workflowrecord.WF_ID
            } equals
        new
            {
                MILESTONE_PROJECT_REL_ID = wfmilestoneprojectrel.MILESTONE_PROJECT_REL_ID,
                workflowmilestone.WF_ID
            }
    select workflowmilestone).ToList();