C# 如何在一个模型中合并两个不同的模型,并在一个视图中显示输出?

C# 如何在一个模型中合并两个不同的模型,并在一个视图中显示输出?,c#,html,asp.net-core,C#,Html,Asp.net Core,这是我的模型 { public int Id { get; set; } public int? MainSurveyId { get; set; } public string Question { get; set; } public DateTime? DateCreated { get; set; } public string CreatedBy { get; set; } publ

这是我的模型

    {
        public int Id { get; set; }
        public int? MainSurveyId { get; set; }
        public string Question { get; set; }
        public DateTime? DateCreated { get; set; }
        public string CreatedBy { get; set; }
        public string Status { get; set; }
        public IList<xxAnswer> answers { get; set; }
    }
这是我的观点,但它显示了
@foreach(q.answers中的var a)
中的一个错误


@foreach(模型中的var q.问题)
{
@q、 问题:
@foreach(q.answers中的var a)
{
@a、 答复
}
}

我想把答案贴在结果旁边。它们位于不同的数据库表中。但是它在
@foreach(q.answers中的var a)输出错误

我终于明白了:

<tbody>      
    @foreach (var q in Model.questions)
    {
      <tr>
      <td scope="row">
        @q.Question
      </td>
      @foreach (var a in Model.answers.Where(x => x.SurveyQuestionId == q.Id))
      {
         <td scope="row">
           @a.Answer
         </td>    
      }
      </tr>
    }
</tbody>

我有点晚了,但是我希望这将帮助您优化模型方法

假设这是您的简化模型:

public class AnswerModel
{
   // Omitted for simplicity
}

public class QuestionModel
{
    public List<AnswerModel> Answers { get; set; } = new List<AnswerModel>();
}
公共类应答器模型
{
//为简单起见省略
}
公共类问题模型
{
公开名单

但是,我将您的方法用于两个独立的查询:

var model = new List<QuestionModel>();
var questions = _context.SurveyQuestions.Where(x => x.MainSurveyId == Surveyid).ToList();
var answers = _context.SurveyCompetitorAnswer.Where(x => x.MainSurveyId == Surveyid).ToList();
foreach (var q in questions){
    var qModel = new QuestionModel();
    qModel.Answers.AddRange(answers.Where(x => x.SurveyQuestionId == q.Id).ToList());
    model.Add(qModel);
}
var模型=新列表();
var questions=_context.SurveyQuestions.Where(x=>x.MainSurveyId==Surveyid.ToList();
var answers=_context.SurveyCompetitorAnswer.Where(x=>x.MainSurveyId==Surveyid.ToList();
foreach(问题中的var q){
var qModel=新问题模型();
qModel.Answers.AddRange(Answers.Where(x=>x.SurveyQuestionId==q.Id).ToList());
model.Add(qModel);
}
使用更简单和聚合的模型:

<tbody>
    @foreach (var q in Model)
    {
        <tr>
            <td scope="row">
                @q.Question
            </td>
            @foreach (var a in q.Answers)
            {
                <td scope="row">
                    @a.Answer
                </td>    
            }
        </tr>
    }
</tbody>

@foreach(模型中的var q)
{
@q、 问题:
@foreach(q.Answers中的var a)
{
@a、 答复
}
}
如果您愿意共享您的实体,我们可以优化查询

快乐编码!

@foreach (var a in Model.answers.Where(x => x.SurveyQuestionId == q.Id))
public class AnswerModel
{
   // Omitted for simplicity
}

public class QuestionModel
{
    public List<AnswerModel> Answers { get; set; } = new List<AnswerModel>();
}
var model = new List<QuestionModel>();
var questions = _context.SurveyQuestions.Where(x => x.MainSurveyId == Surveyid).ToList();
var answers = _context.SurveyCompetitorAnswer.Where(x => x.MainSurveyId == Surveyid).ToList();
foreach (var q in questions){
    var qModel = new QuestionModel();
    qModel.Answers.AddRange(answers.Where(x => x.SurveyQuestionId == q.Id).ToList());
    model.Add(qModel);
}
<tbody>
    @foreach (var q in Model)
    {
        <tr>
            <td scope="row">
                @q.Question
            </td>
            @foreach (var a in q.Answers)
            {
                <td scope="row">
                    @a.Answer
                </td>    
            }
        </tr>
    }
</tbody>