c# - 此 LINQ JOIN 是否存在某种语法错误?

标签 c# linq entity-framework join

我看过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 连接表达式中,sttask 都有红色波浪线。请告诉我我在做什么蠢事。

最佳答案

来自外部序列的键选择器应该先行。在您的案例中,外部序列是 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/

相关文章:

c# - LINQ to SQL 复杂查询

c# - EF Core LINQ 从包含的实体中排除列

c# - Entity Framework 中非数据库支持的相关对象

c# - 将 Unicode 代理项对转换为文字字符串

C# double 问题

C# WPF 标签可见性异常

c# - 使用 LINQ 和 RavenDB 对预定义过滤器进行嵌套排序

c# - 如何引用一个API的两个版本?

c# - LINQ to Entities 查询和 GUID 区分

c# - List<Enum> in Aggregates Entity Framework Code First