1

エンティティのデータベース モデル

間接的に接続されているエンティティがあります。ここで、Taskは間接的にSprintに接続されます。1 つのBacklogItemは複数のTaskを持つことができ、各BacklogItemは 1 つの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);
}

今、私が欲しいのは、6 行のコードではなく、1 つの LINQ クエリで 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 に答える