LINQ to SQL复杂连接具有混合条件

时间:2011-06-27 10:43:15

标签: c# sql linq-to-sql

我有一个SQL语句,我试图将其转换为LINQ to SQL,并且我已经设法将其中的大部分转换为,但是遇到了一个我无法在LINQ中解决的语句。 / p>

引起头痛的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中编写它们了问题。不过这个,我看不出它是怎么写的。

我看到了this回答,但也看不出如何在这种情况下应用它。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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并根据需要进行优化。

相关问题