我在SO和various questions上查看了other sites,并且此似乎是在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());
暂时忽略我实际上选择任何感兴趣的内容这一事实,但我希望能够访问每行st.NAME
属性TPM_TASK
1}}。这两个表由STAGEID
链接。我收到编译器错误:
名称'st'不在'equals'左侧的范围内。考虑 交换'equals'两侧的表达式。
在LINQ连接表达式中,st
和task
都有红色波浪形。请告诉我,我正在做一些愚蠢的事。
答案 0 :(得分:14)
外部序列的键选择器应该先行。您的案例中的外部序列是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());