2017-01-08 10 views
0

Entity Frameworkの助けを借りてデータを取得する際に、子ViewModelにデータを取り込みたいと思います。以下のクエリは正常に動作しますが、内部のViewModelには子モデル(コレクション)の最初の項目のみが設定されます。内部ViewModelに、対応するすべてのModelデータを設定するにはどうすればよいですか。EF ViewModelにデータを含めるときに含める

var pagedQuestions = _ctx.VoteQuestions.Include(q => q.VoteAnswerOptions).Select(q => new Question 
{ 
    QuestionStr = q.Name, 
    QuestionId = q.Id, 
    IsMultipleAnswerQuestion = q.VoteType.Id == 1 ? false : true, 
    PossibleAnswers = new List<PossibleAnswer> 
    { 
     new PossibleAnswer 
     { 
      AnswerId = q.VoteAnswerOptions.FirstOrDefault().Id, 
      AnswerStr = q.VoteAnswerOptions.FirstOrDefault().Answer 
     } 
    } 
}); 
+0

このコードは、私は、 – Sentry

+0

が突然終了し、多くのおかげで不完全ですそれは有り難いです。 – lucas

+0

申し訳ありませんが、私は認識していなかった初期上記のコードで私の悪い – Sentry

答えて

0

最初Select内部二Selectを行うことができます。

var pagedQuestions = _ctx.VoteQuestions.Select(q => new Question 
{ 
    QuestionStr = q.Name, 
    QuestionId = q.Id, 
    IsMultipleAnswerQuestion = q.VoteType.Id == 1 ? false : true, 
    PossibleAnswers = q.VoteAnswerOptions 
         .Select(a => new PossibleAnswer 
           { 
            AnswerId = a.Id, 
            AnswerStr = a.Answer 
           } 
          ) 
    } 
}); 

あなたはIncludeは必要ありません。 Entity FrameworkはVoteAnswerOptions自身に参加し、そこから必要なフィールドを選択します。

+0

素晴らしいものにデータを移入することができる午前、最初の行は、それだけで正常に動作 – lucas

関連する問題