2017-08-29 23 views
0

嘿,我有以下兩個類:LINQ的加入到對象的列表屬性

public class Project 
{ 
    public int Id { get; protected set; } 
    public string ProjectName { get; protected set; } 
    public List<Task> TaskList{ get; protected set; } 
} 

public class Task 
{ 
    public int Id { get; protected set; } 
    public int ProjectId { get; protected set; } 
    public string Name { get; protected set; } 
} 

如果我使用實體框架是可以從數據庫中獲取項目對象,並在同一時間(例如,通過ID)。將任務列表連接到[Project] TaskList屬性中,或者我應該先獲取一個項目,然後執行任務?

它應該如何正確實施?

+2

查找到的導航性能和'.Include' –

+0

它的工作原理。這種解決方案的優點和缺點是什麼? – bielu000

+0

看看https://stackoverflow.com/q/1262307/6400526。可以幫助 –

回答

1

如果你描述表之間的關係項目和任務解釋here 比你可以直接調用你的項目實體;它將附帶一份相關任務清單;如果您沒有描述關係,那麼您必須創建linq to etnity的連接查詢,或者將.Inlcude用於相互關聯的實體。

var tasks = (from items in db.Task 
join projects in db.Project on items.ProejctId equals projects.Id 
where 1==1 // you can add some other confitions to here 
select new SelectItemsList() { //Items you want to select }) 
1

您是否需要像下面的代碼那樣的Project類對象?不使用.INCLUDE <>

var res = (from p in db.ProjectTable 
      select new Project 
      { 
       Id = p.Id, 
       ProjectName = p.ProjectName, 
       TaskList = (from q in db.TaskTable 
         where q.ProjectId = p.Id 
         select q 
        ).ToList() 
      }).ToList(); 
return res; //you will get List<Project> with their List<TaskList> 
+0

對於單個項目,使用條件與項目表一樣,其中p.ProjectId == projectId(projectId可能是參數變量) –

+1

這種方法看起來不錯。 – bielu000

相關問題