Lambda表达式相当于"<>"在带有Join的SQL的from子句中

时间:2016-03-10 10:37:03

标签: c# linq join lambda sql-to-linq-conversion

任何人都可以帮助我吗?我无法将SQL中的以下表达式转换为等效的Lambda表达式

ON nextT.TaskID = a.NextTaskID AND a.TaskID <> nextT.TaskID 

要转换的SQL

SELECT a.*
FROM            dbo.Action AS a INNER JOIN dbo.Task AS t 
ON t .TaskID = a.TaskID 
INNER JOIN dbo.Task AS nextT 
ON nextT.TaskID = a.NextTaskID AND a.TaskID <> nextT.TaskID //This need to converted

我转换表达式的未完成尝试如下

等效Lambda表达式

    var context = new DataClassesDataContext();
    var data = (from a in context.Actions
                join t in context.Tasks on a.TaskID equals t.TaskID
                join nextT in context.Tasks 
on 
.......new {v1 = a.NextTaskID, v2 = a.TaskID} equals new {v1 = nextT.TaskID , v2 = nextT.TaskID}.....<---This is the problem.
                select new vw_NextTask1
                {
                    TaskID = a.TaskID,
                    Task = t.Title,
                    ActionID = a.ActionID,
                    Action = a.Title,
                    NextPhaseID = a.NextPhaseID,
                    NextTaskID = nextT.TaskID,
                    NextTask = nextT.Title,
                          Type = a.Type
                }).ToList<vw_NextTask1>();
    return data;

1 个答案:

答案 0 :(得分:1)

你可以添加一个where子句。

{{1}}