0

說我有一個實體,稱爲請求有類似下面的子實體的集合:EF可以選擇多個轉換的集合嗎?

public class Request 
{ 
    public int RequestID { get; set; } 

    //Navigation Properties 
    public ICollection<Task> Tasks { get; set; } 
    public ICollection<Question> Questions { get; set; } 
} 

我想檢索包含兩個任務和問題,收集的對象,我可以做到這一點使用include()但我不不需要這些集合中的所有字段。

說我只感興趣從每個TaskQuestion實體檢索名稱和日期字段。

我知道如何做到這一點的唯一方法是在多個查詢中調用select()來檢索每個轉換後的集合。

有沒有辦法在單次訪問數據庫時做到這一點?

+0

您需要詢問嗎? –

回答

2

你應該可以這樣做:

var requests = context.Request 
         .Select(r => new 
           { 
           id = R.RequestID, 
           tasks = R.Tasks 
             .Select(t => new 
                 { 
                 Name = t.Name, 
                 Date = t.Date 
                 });     
           questions = R.Questions 
              .Select(q => new 
                  { 
                  Name = q.Name, 
                  Date = q.Date 
                  });     
           }); 

我敢肯定Include不是必需的,因爲查詢本身爲了回報加盟項目已經加盟。

+0

謝謝埃裏克。我結束了它:) –

0

我敢肯定,這不是正是你要找的,但是這應該只是一個往返到數據庫,並應該讓你在正確的方向開始:

entitycontext.Requests.Select(t => new { 
    TaskName = t.Questions.First().Name, 
    QuestionName = t.Tasks.First().Name 
}); 
相關問題