这个LINQ JOIN是否存在某种语法错误?

Mik*_*sen 10 c# linq entity-framework join

我已经在SO和其他网站上查看了各种问题,这似乎是在LINQ中执行的正确语法,但它只是不起作用:JOIN

var stages = (from stage in entityManager.TPM_TASKSTAGE select stage);
var results = (from task in pv.TPM_TASK
               join st in stages on st.STAGEID equals task.STAGEID
               where task.TASKTYPE == "Solution"
               select new SolutionTask());
Run Code Online (Sandbox Code Playgroud)

暂时忽略这样一个事实,即我实际上并没有选择任何有意义的东西,但我希望能够访问st.NAME每一行的属性TPM_TASK.这两个表是相连的STAGEID.我收到编译器错误:

名称'st'不在'equals'左侧的范围内.考虑交换'equals'两侧的表达式.

在LINQ加入表情,都sttask有红色的squigglies.请告诉我,我正在做一些愚蠢的事情.

Ser*_*kiy 15

外部序列的键选择器应该先行.在你的情况下外部序列是pv.TPM_TASK.所以,你应该加入task.STAGEID equals st.STAGEID

var stages = (from stage in entityManager.TPM_TASKSTAGE select stage);
var results = (from task in pv.TPM_TASK
               join st in stages on task.STAGEID equals st.STAGEID // here
               where task.TASKTYPE == "Solution"
               select new SolutionTask());
Run Code Online (Sandbox Code Playgroud)