2012-11-28 21 views
1

Database model for entities快捷鍵LINQ toentity查詢MVC中的以下代碼3

我有不直接連接的實體。在這裏,任務被間接連接到Sprint。 One BacklogItem可以有幾個任務和每個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行代碼列表tasksforSprint。 在此先感謝。

回答

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(); 
+0

非常感謝。我現在明白了。 – asish