C# 按项目类型将列表中的项目配对,并在一个循环中显示在视图中
是保存结果模型列表的列表对象C# 按项目类型将列表中的项目配对,并在一个循环中显示在视图中,c#,asp.net-mvc,.net-4.5,C#,Asp.net Mvc,.net 4.5,是保存结果模型列表的列表对象 Model.Results 公共列表结果{get;set;} 班级成绩 { 公共int Id{get;set;} public int resultId{get;set;} 公共字符串resultName{get;set;} public int resultTypeId{get;set;} 公共字符串resultValue{get;set;} } 我现在需要做的是在视图中直接显示该列表: public List<result> Results {
Model.Results
公共列表结果{get;set;}
班级成绩
{
公共int Id{get;set;}
public int resultId{get;set;}
公共字符串resultName{get;set;}
public int resultTypeId{get;set;}
公共字符串resultValue{get;set;}
}
我现在需要做的是在视图中直接显示该列表:
public List<result> Results {get; set;}
class result
{
public int Id {get; set;}
public int resultId {get; set;}
public string resultName {get; set;}
public int resultTypeId {get; set;}
public string resultValue {get; set;}
}
@foreach(Model.Results中的变量结果)
{
- @result.resultName
- @result.resultValue
}
但我需要做的是检查resultTypeId是否相同我想在同一行上显示resultValue:
@foreach(var result in Model.Results)
{
<ul>
<li> @result.resultName</li>
<li> @result.resultValue</li>
</ul>
}
@foreach(Model.Results中的变量结果)
{
- @result.resultName
@if(result.resultTypeId==列表中的任何其他result.resultTypeId)
{
- @result.resultValue-@另一个result.resultValue
}
@否则
{
- @result.resultValue
}
}
请让我知道,如果你需要我来说明更多。当我看逻辑时,它看起来很直接,但当我开始编码时,我看不到解决方法
提前感谢。在您的模型中创建一个属性,以列表形式返回所有
结果类型ID
:
@foreach(var result in Model.Results)
{
<ul>
<li> @result.resultName</li>
@if(result.resultTypeId == any other result.resultTypeId in the list)
{
<li> @result.resultValue - @the other result.resultValue</li>
}
@else
{
<li> @result.resultValue</li>
}
</ul>
}
public IEnumerable结果类型ID
{
得到
{
返回Results.DistinctBy(x=>x.resultTypeId)。选择(x=>x.resultTypeId);
}
}
在您看来,您可以对该集合进行评估
public IEnumerable<int> ResultsTypeIds
{
get
{
return Results.DistinctBy(x=>x.resultTypeId).Select(x=>x.resultTypeId);
}
}
@foreach(Model.ResultsTypeIds中的var resultTypeId)
{
@foreach(Model.Results中的var结果)
{
- @result.resultValue
}
}
在模型中创建一个属性,该属性以列表形式返回所有结果类型ID
:
@foreach(var result in Model.Results)
{
<ul>
<li> @result.resultName</li>
@if(result.resultTypeId == any other result.resultTypeId in the list)
{
<li> @result.resultValue - @the other result.resultValue</li>
}
@else
{
<li> @result.resultValue</li>
}
</ul>
}
public IEnumerable结果类型ID
{
得到
{
返回Results.DistinctBy(x=>x.resultTypeId)。选择(x=>x.resultTypeId);
}
}
在您看来,您可以对该集合进行评估
public IEnumerable<int> ResultsTypeIds
{
get
{
return Results.DistinctBy(x=>x.resultTypeId).Select(x=>x.resultTypeId);
}
}
@foreach(Model.ResultsTypeIds中的var resultTypeId)
{
@foreach(Model.Results中的var结果)
{
- @result.resultValue
}
}
您可以根据ID对项目进行分组:
@foreach(var resultTypeId in Model.ResultsTypeIds)
{
<ul>
@foreach(var result in Model.Results)
{
<li>@result.resultValue</li>
}
</ul>
}
@foreach(Model.Results.GroupBy(result=>result.resultTypeId)中的var resultGroup)
{
- @resultGroup.First().resultName
@foreach(resultGroup中的var结果){
- @result.resultValue
}
}
您可以根据ID对项目进行分组:
@foreach(var resultTypeId in Model.ResultsTypeIds)
{
<ul>
@foreach(var result in Model.Results)
{
<li>@result.resultValue</li>
}
</ul>
}
@foreach(Model.Results.GroupBy(result=>result.resultTypeId)中的var resultGroup)
{
- @resultGroup.First().resultName
@foreach(resultGroup中的var结果){
- @result.resultValue
}
}
我建议以view所期望的方式格式化数据,如:
@foreach(var resultGroup in Model.Results.GroupBy(result => result.resultTypeId))
{
<ul>
<li> @resultGroup.First().resultName</li>
@foreach (var result in resultGroup) {
<li> @result.resultValue</li>
}
</ul>
}
而不是在视图上,只需迭代每个组中的组和项目:
Model.Results.GroupBy(r=>r.resultTypeId)
.Select(gr=>new {resultTypeId = gr.Key, resultName = gr.First().resultName, Items = gr.ToList()})
.ToList();
@foreach(Model.GroupedResults中的var组)
{
- @group.resultName
-
@foreach(group.Items中的变量项)
{
@item.resultValue
}
}
您可能希望使用其他内容作为视图标记,但它应该会让您产生这样的想法。我建议您按照视图预期的方式格式化数据,如:
@foreach(var resultGroup in Model.Results.GroupBy(result => result.resultTypeId))
{
<ul>
<li> @resultGroup.First().resultName</li>
@foreach (var result in resultGroup) {
<li> @result.resultValue</li>
}
</ul>
}
而不是在视图上,只需迭代每个组中的组和项目:
Model.Results.GroupBy(r=>r.resultTypeId)
.Select(gr=>new {resultTypeId = gr.Key, resultName = gr.First().resultName, Items = gr.ToList()})
.ToList();
@foreach(Model.GroupedResults中的var组)
{
- @group.resultName
-
@foreach(group.Items中的变量项)
{
@item.resultValue
}
}
您可能需要其他内容作为视图标记,但它应该会让您了解。是
-
是减法字符还是分隔符?很抱歉没有说清楚。这是一个分隔符是-
减法还是分隔符?很抱歉没有说清楚。我喜欢这个答案!简单整洁,无需创建额外的对象!非常感谢@Sefe!我喜欢这个答案!简单整洁,无需创建额外的对象!非常感谢@Sefe!非常感谢你。我喜欢按view所期望的方式格式化数据的建议。由于良好的实践,理应成为公认的答案!非常感谢你。我喜欢按view所期望的方式格式化数据的建议。由于良好的实践,理应成为公认的答案!