LINQ - 连接两个表并将结果放在具有不同结构的viewmodel中

时间:2014-02-22 04:02:32

标签: asp.net-mvc linq entity-framework

有关如何编写LINQ以实现以下内容的任何帮助/提示都将不胜感激。

数据模型:

public class Question
{
 public int ID { set; get; }
 public string QuestionText { set; get; }

}

public class Answer
{
 public int ID { set; get; }
 public int QuestionID { set; get; }
 public string AnswerText { set; get; }
}

查看型号:

public class QuestionViewModel
{
 public int ID { set; get; }
 public string QuestionText { set; get; }
 public IEnumerable<AnswerViewModel> Answers { set; get; }

}

public class AnswerViewModel
{
 public int ID { set; get; }
 public string AnswerText { set; get; }
}

public class EvaluationViewModel
{
  public IEnumerable<QuestionViewModel> Questions { set; get; }
}

如何编写LINQ查询以加入模型问题和答案,并将行写入EvaluationViewModel结构?

可以在一个LINQ查询中完成吗?或者我们是否必须编写LINQ来加入模型问答,然后单独编写一些内容以将数据导入EvaluationViewModel结构?

感谢您对此提供任何帮助。

实际上,我从http://www.techiesweb.net/radio-button-list-in-asp-net-mvc/

获得了这个ViewModel结构

1 个答案:

答案 0 :(得分:2)

假设您有两个集合:问题答案

IEnumerable<Question> Questions;
IEnumerable<Answer> Answers;

你可以这样做:

var vm = new EvaluationViewModel();
vm.Questions = 
    Questions.Select(q => new QuestionViewModel()
    {
        ID = q.ID,
        QuestionText = q.QuestionText,
        Answers = Answers.Where(a => a.QuestionID == q.ID).Select(a => new AnswerViewModel()
        {
            ID = a.ID,
            AnswerText = a.AnswerText
        })
    });