我有两个 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 个元素(结果来自第一个 foreach
语句)
而是迭代剩余的 3 个元素。
任何人都可以建议获得这样的结果所需的任何更改吗??? 提前致谢!
最佳答案
您可以使用 LINQ 将组分成两部分。然后检查这些组并将它们一一添加到结果中:
var columns = dtx.Rows.OfType<DataRow>().Select((r, i) => new {Row = r, Group = i >= ((dtx.Rows.Count / 2) + (dtx.Rows.Count % 2))}).GroupBy(r => r.Group);
foreach (var group in columns)
{
strAmen += @"<ul class='col-md-6'>";
foreach (DataRow dr in group.Select(g => g.Row))
{
strAmen += "<li class='enabled'>" + dr["amen"].ToString() + "</li>";
}
strAmen += @"</ul>";
}
关于c# - 如何在一个 foreach 中跳过结果迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066254/