ASP.NET MVC 5:foreach 循环按特定顺序排序和写入输出
ASP.NET MVC 5 : foreach loop sort and write output in specific order
我的视图中有一个 foreach 循环,我需要它以特定顺序 id HTML 部分写入数据。问题是,如果 HTML 部分没有数据,我不想看到该部分。
int idSection1 = 1;
int idSection2 = 2;
int idSection3 = 3;
@foreach (var item in Model.ItemList)
{
if (itme.IdSection == idSection1)
{
<div>
<h4>Section 1</h4>
foreach (var data in Model.ItemList)
{
if (data.IdSection == 1)
{
<p>data</p>
}
idSection1 = idSection1 + 10;
}
</div>
}
if (itme.IdSection == idSection2)
{
<div>
<h4>Section 2</h4>
foreach (var data in Model.ItemList)
{
if (data.IdSection == 2)
{
<p>data</p>
}
idSection2 = idSection1 + 10;
}
</div>
}
if (itme.IdSection == idSection3)
{
<div>
<h4>Section 3</h4>
foreach (var data in Model.ItemList)
{
if (data.IdSection == 2)
{
<p>data</p>
}
idSection3 = idSection3 + 10;
}
</div>
}
}
根据我的列表和输入数据的顺序,我的输出是这样的:
<h4>Section 2</h4>
<p>data 1</p>
<p>data 2</p>
<p>data 3</p>
<h4>Section 1</h4>
<p>data 1</p>
<h4>Section 3</h4>
<p>data 1</p>
<p>data 2</p>
而且我需要它是这样的,重要的部分例如“第2节”如果没有数据就不需要写! :
<h4>Section 1</h4>
<p>data 1</p>
<h4>Section 2</h4>
<p>data 1</p>
<p>data 2</p>
<p>data 3</p>
<h4>Section 3</h4>
<p>data 1</p>
<p>data 2</p>
我认为您可以将 foreach
循环重构为:
var idSection=1;
@foreach (var item in Model.ItemList.OrderBy(x=>x.IdSection))
{
if(Model.ItemList.Any())
{
<div>
<h4>Section @item.IdSection</h4>
foreach (var data in Model.ItemList.OrderBy(x=>x.IdSection))
{
<p>data @data.IdSection</p>
idSection = idSection + 10;
}
</div>
}
}
这将根据部分 ID 对您的列表进行排序,它还将检查列表中是否有任何元素。
我的视图中有一个 foreach 循环,我需要它以特定顺序 id HTML 部分写入数据。问题是,如果 HTML 部分没有数据,我不想看到该部分。
int idSection1 = 1;
int idSection2 = 2;
int idSection3 = 3;
@foreach (var item in Model.ItemList)
{
if (itme.IdSection == idSection1)
{
<div>
<h4>Section 1</h4>
foreach (var data in Model.ItemList)
{
if (data.IdSection == 1)
{
<p>data</p>
}
idSection1 = idSection1 + 10;
}
</div>
}
if (itme.IdSection == idSection2)
{
<div>
<h4>Section 2</h4>
foreach (var data in Model.ItemList)
{
if (data.IdSection == 2)
{
<p>data</p>
}
idSection2 = idSection1 + 10;
}
</div>
}
if (itme.IdSection == idSection3)
{
<div>
<h4>Section 3</h4>
foreach (var data in Model.ItemList)
{
if (data.IdSection == 2)
{
<p>data</p>
}
idSection3 = idSection3 + 10;
}
</div>
}
}
根据我的列表和输入数据的顺序,我的输出是这样的:
<h4>Section 2</h4>
<p>data 1</p>
<p>data 2</p>
<p>data 3</p>
<h4>Section 1</h4>
<p>data 1</p>
<h4>Section 3</h4>
<p>data 1</p>
<p>data 2</p>
而且我需要它是这样的,重要的部分例如“第2节”如果没有数据就不需要写! :
<h4>Section 1</h4>
<p>data 1</p>
<h4>Section 2</h4>
<p>data 1</p>
<p>data 2</p>
<p>data 3</p>
<h4>Section 3</h4>
<p>data 1</p>
<p>data 2</p>
我认为您可以将 foreach
循环重构为:
var idSection=1;
@foreach (var item in Model.ItemList.OrderBy(x=>x.IdSection))
{
if(Model.ItemList.Any())
{
<div>
<h4>Section @item.IdSection</h4>
foreach (var data in Model.ItemList.OrderBy(x=>x.IdSection))
{
<p>data @data.IdSection</p>
idSection = idSection + 10;
}
</div>
}
}
这将根据部分 ID 对您的列表进行排序,它还将检查列表中是否有任何元素。