2017-01-08 3 views
0

При извлечении данных с помощью Entity Framework я хотел бы заполнить дочерний объект ViewModel, который является коллекцией. Приведенный ниже запрос отлично работает, но только заполняет внутренний ViewModel первым элементом дочерней модели (коллекции). Как я могу заполнить внутренний ViewModel всеми соответствующими данными модели.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

Смежные вопросы