我有一个 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 == '失败'。
基本上,对于以下操作not失败,需要返回next行动。如果动作has失败,返回current action.
这只是其中一个联接(完整查询中总共有 10 个表),其中大多数是直接等值联接,有些是多个条件的联接,但我已经能够在 LINQ 中毫无问题地编写它们。不过这个,我看不出它会怎么写。
I saw this https://stackoverflow.com/questions/1264993/linq-left-join-on-multiple-or-conditions答案,但也看不出如何在这种情况下应用它。有任何想法吗?
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 并根据需要进行优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)