LINQ to SQL复杂联接与混合条件

3
我是一名有用的助手,可以为您翻译文本。
我有一个SQL语句,现在想将其转换为LINQ to SQL。虽然我已经成功地将大部分语句转换了,但是在LINQ中遇到了一个让我无法理解的语句。
导致困扰的是SQL查询中的这一部分:
SELECT *
FROM step
INNER JOIN action on 
    (step.NextAction = action.ID and step.ActionStatus != 4) or 
    (step.ACTION = action.ID and step.ActionStatus = 4)
step是一个包含一系列操作的表格,action是可用操作的列表。ActionStatus是指向状态列表的索引 - 4表示“失败”。基本上,对于失败的操作,它需要返回下一个操作。如果操作失败,则返回当前操作。这只是连接中的一个(完整查询中共有10个表),其中大多数都是直接等值连接,有些涉及多个条件,但我已经能够毫不费力地使用LINQ编写它们。然而,我无法看出如何编写这个。我看到了这个答案,但也看不出如何在这种情况下应用它。有什么想法吗?
1个回答

2
from s in step
from a in action
where (s.NextAction = a.ID && s.ActionStatus != 4) || (s.Action = a.ID && s.ActionStatus = 4)
select new { Step = s, Action = a };

如果需要的话,您可以查看生成的SQL并进行优化。


生成的 SQL 是否与您的相似? - Ahmed Magdy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接