C# foreach循环中具有不同条件的内部助手,如何管理?

C# foreach循环中具有不同条件的内部助手,如何管理?,c#,asp.net-mvc-4,razor-2,C#,Asp.net Mvc 4,Razor 2,foreach循环中具有不同条件的内部助手,如何管理 我希望有不同的foreach循环,但是助手的其余部分应该是相同的 不同版本 1 - foreach (var item in Model.Where(_ => _.Version > 0)) 2 - foreach (var item in Model.Where(_ => _.Version = 0)) 3 - foreach (var item in Model) 有什么建议吗 @helper Wr

foreach循环中具有不同条件的内部助手,如何管理

我希望有不同的foreach循环,但是助手的其余部分应该是相同的 不同版本

   1 - foreach (var item in Model.Where(_ => _.Version > 0))
   2 - foreach (var item in Model.Where(_ => _.Version = 0))
   3 - foreach (var item in Model)
有什么建议吗

 @helper WriteGrid()
 {
  foreach (var item in Model.Where(_ => _.Version > 0))
  {
    <div>
     @item.From
    </div>
  }
}
@helper WriteGrid()
{
foreach(模型中的var项,其中(=>Ux.Version>0))
{
@项目。从
}
}

您可以稍微更改一下您的
@helper
以确定要显示哪些项目:

@helper WriteGrid(Func<MyModel, bool> p)
{
    foreach (var item in Model.Where(p))
    {
        <div>@item.From</div>
    }
}

@WriteGrid(x => x.Version > 0)
<hr/>
@WriteGrid(x => x.Version == 0)
<hr/>
@WriteGrid(x => true)
<hr/>
@helper WriteGrid(Func p)
{
foreach(模型中的var项目,其中(p))
{
@项目。从
}
}
@WriteGrid(x=>x.Version>0)

@WriteGrid(x=>x.Version==0)
@WriteGrid(x=>true)

具体的不同情况是什么?您在问题中输入的三个将导致ID为零或ID为2的项目被处理两次。这是故意的,还是每个项目最多应该处理一次,或者每个项目应该只处理一次?我对问题进行了编辑以使其更清楚。Condition1=Version1,Condition2=All version expect Version1,Condition3=不止一次如何使循环体成为另一个辅助对象?使用另一个辅助对象的循环体是一种解决方案为什么要多次渲染同一项(最后一个循环重复前两个循环中已渲染的项)?我认为你的版本比我的版本更有可能成为OP的目标,所以我删除了我的答案。不过,我要做一个简化的更改:我要将
谓词
更改为
Func
,并将其直接传递到
的Where
。是的,这一点当然很好。我只是评论说,如果他们真的想在对方之后直接回答,你的答案会更有效。是的,他们都是有效的。更新的版本只是稍微干净一点