我有两个foreach
循环,如代码所示:
DataTable dtx = GetAmens(Id);
if (dtx.Rows.Count > 0)
{
strAmen += @"<ul class='col-md-6'>";
int c = 0;
foreach (DataRow dr in dtx.Rows)
{
if (c >= ((dtx.Rows.Count / 2) + (dtx.Rows.Count % 2))) break;
strAmen += "<li class='enabled'>" + dr["amen"].ToString() + "</li>";
c++;
}
strAmen += @"</ul><ul class='col-md-6'>";
c = 0;
foreach (DataRow dr in dtx.Rows)
{
strAmen += "<li class='enabled'>" + dr["amen"].ToString() + "</li>";
c++;
}
strAmen += @"</ul>";
}
数据表中有7个值。
第一个foreach
正在迭代4个元素。
现在我希望第二个foreach
语句不能遍历4个元素(结果来自第1 foreach
个语句)
而是迭代剩下的3个元素。
任何人都可以建议获得此类结果所需的任何更改??? 提前谢谢!
答案 0 :(得分:2)
您可以使用LINQ将组拆分为两个。然后遍历组并逐个添加到结果中:
ROUNDUP(AVERAGE(IF(RangeName1=2;RangeName2));2)*100&" %."
答案 1 :(得分:0)
一个简单的解决方案是使用新变量和for循环,如果你可以使用它。 这将确保您只需要循环'n'次(n是记录数)。
如果你有一些带有变量“c”的逻辑,那么在内部for循环中使用一个新变量,而不是重用“c”
DataTable dtx = GetAmens(Id);
string strAmen = "";
if (dtx.Rows.Count > 0)
{
strAmen += @"<ul class='col-md-6'>";
int c = 0;
foreach (DataRow dr in dtx.Rows)
{
if (c >= ((dtx.Rows.Count / 2) + (dtx.Rows.Count % 2)))
{
strAmen += @"</ul><ul class='col-md-6'>";
for (c=c; c < dtx.Rows.Count; c++)
{
strAmen += "<li class='enabled'>" + dtx.Rows[c]["amen"].ToString() + "</li>";
}
strAmen += @"</ul>";
break;
}
strAmen += "<li class='enabled'>" + dr["amen"].ToString() + "</li>";
c++;
}
}