我看过various questions在 SO 和 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
的每一行。这两个表由 STAGEID
链接。我收到编译器错误:
The name 'st' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.
在 LINQ 连接表达式中,st
和 task
都有红色波浪线。请告诉我我在做什么蠢事。
最佳答案
来自外部序列的键选择器应该先行。在您的案例中,外部序列是 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());
关于c# - 此 LINQ JOIN 是否存在某种语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15889477/