C# 使用LINQ获取存储在表中的任务的依赖关系

C# 使用LINQ获取存储在表中的任务的依赖关系,c#,linq,C#,Linq,我有一个数据库,它有一个具有以下布局的表: JobID TaskID DependantTaskID -------------------------------- 1000 20 19 1000 21 20 如您所见,它为每个作业以及该作业中的每个任务指定了从属任务标识符。我想写一些LINQ,给定一个作业,它返回每个任务和相关的依赖项,然后我可以对它们进行适当排序。这是我的LINQ: var query = from

我有一个数据库,它有一个具有以下布局的表:

JobID   TaskID   DependantTaskID
--------------------------------
1000      20            19
1000      21            20
如您所见,它为每个作业以及该作业中的每个任务指定了从属任务标识符。我想写一些LINQ,给定一个作业,它返回每个任务和相关的依赖项,然后我可以对它们进行适当排序。这是我的LINQ:

var query = from t in Sys_JobDependantTasks
            where t.JobID == 1000
            select new
            {
                TaskId = t.Taskid,
                Dependencies = (from d in Sys_JobDependantTasks
                                where d.DependantTaskid == t.Taskid
                                select d.DependantTaskid).ToList()
            };

var result = query.ToList();

result.Dump();
。。。但结果出乎意料。我得到:

TaskId          Dependencies
----------------------------
9304            9304
                9304

然而,表的原始转储表示9304依赖于9633。我是LINQ的新手,所以我想知道是否有明显的错误?

我认为您需要将子查询更改为:

from d in Sys_JobDependantTasks
where d.TaskId == t.DependantTaskid
select d.TaskId 

有趣的是,这确实会返回正确的依赖关系,但会返回两次。例如,9304依赖于9633,但我得到了两个9633的回报…+1,这非常有效。我还需要在内部查询上使用JobID进行约束,这将按预期返回结果。