1

实体的数据库模型

我有间接连接的实体。在这里,Task间接连接到Sprint 。一个BacklogItem可以有多个Task,每个BacklogItem属于一个Sprint。因此,在我的应用程序中,我需要属于某个 sprint 的所有任务。由于它们不直接连接,因此我不得不编写许多代码行,如下所示:

public viewResult tasksForSprint(int sprintId){
List<Task> tasksforSprint = new List<Task>();

var backlogItemlsit = db.BacklogItems.Where(b => b.sprintId == sprintId).OrderBy(i => i.backlogId).ToList();
var sprintTaskItems = db.Tasks.OrderBy(i => i.taskId).ToList();
foreach (var item in sprintTaskItems)
{
            if (backlogItemlsit.Any(b => b.backlogId == item.backlogId))
                taskforSprint.Add(item);
}
return view(tasksforSprint);
}

现在,我想要的是使用一个 LINQ 查询而不是 6 行代码来获取 List tasksforSprint。提前致谢。

4

1 回答 1

1

好像是联动。未经测试:

db.BacklogItems
    .Where(b => b.sprintId == sprintId)
    .Join(db.Tasks, 

        // outer join key
        sprint => sprint.backlogId, 

        // inner join key
        task => task.backlogId,

        // result selector -- take the tasks
        (outer, inner) => inner)
.OrderBy(task => task.taskId)    
.ToList();
于 2012-11-28T02:03:15.017 回答