Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按项目类型将列表中的项目配对,并在一个循环中显示在视图中_C#_Asp.net Mvc_.net 4.5 - Fatal编程技术网

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所期望的方式格式化数据的建议。由于良好的实践,理应成为公认的答案!