c# - 如何在一个 foreach 中跳过结果迭代

标签 c# asp.net foreach

我有两个 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/

相关文章:

c# - 在 C# 中访问用户设置会引发异常

c# - 在特定时区找到 LocalDate 的最后可能时刻的最巧妙方法是什么?

javascript - 使用 anchor 时在 Firefox 中重新加载页面?

c# - Linq 样式 "For Each"

c# - 不支持关键字 : 'attachdbfilename' - MDF Database File (C#)

C# 将字符串解析为运行时已知的类型

c# - 为 ASP WebMethod 返回带有 JSON 数据的状态代码 404

asp.net - 来自 Microsoft.AspNet.WebApi.HelpPage 版本 4.0.30506 的运行时编译错误

Java 8 如何操作一个列表中的对象并将它们收集到另一个列表中?

java - 在 JSF 中使用 foreach 循环