我正在尝试使用 Entity Framework 5 运行以下 LINQ 查询:
int taskId = 2;
query = from a in Table_A
where a.StatusCode != "DONE"
&& a.Inbound
join b in Table_B
on a.Id equals b.Id_Table_A
join c in Table_C
on a.State equals (c.State ?? a.State)
where 2 == c.Id_Task
&& b.DataType == c.DataType
select a.Id;
导致我出现问题的行是:
on a.State equals (c.State ?? a.State)
Table_C 中的“State”字段可以为空……当它为空时,它用于暗示“所有状态”。因此,当“c.State”为空时,我希望记录匹配。如果我要在 SQL 中编写它,我会使用以下内容:
JOIN Table_C ON Table_A.State = ISNULL(Table_C.State, Table_A.State)
不幸的是,我收到以下错误:
名称“a”不在“equals”右侧的范围内。考虑交换 'equals' 两边的表达式。
我将感谢任何可以让我了解使这项工作的秘诀的人。
谢谢。