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>