【问题标题】:Alternate looping on for and foreach [closed]for和foreach的交替循环[关闭]
【发布时间】:2015-07-01 05:06:03
【问题描述】:

我有 for 循环,在 for 循环里面我有 foreach 循环,我想要的只是先运行一次 for 循环,然后再运行 foreach 循环,然后再运行一次 for 循环,然后再运行 foreach...

我的代码是:

for (int count = 0; count < countMaster; count++)
{
    foreach (string TemplateName in TemplateList)
    {
        dt.TableName = TemplateName;
        ds.Tables.Add(dt);
    }
}
return ds;

我试图在 foreach 循环的第一次迭代后使用 break 再次进入 for 循环,并在 foreach 的第二次迭代中再次从循环中传递相同的值。

【问题讨论】:

  • 算法有问题。为什么可能需要同时交替迭代两个循环?写下你真正想要发生的事情。
  • 实际上我是在数据表中添加行,并在for循环的基础上将数据传递给数据集。 datatable.TableName 我从 List 中获取并使用 foreach 循环进行迭代并同时分配 TableName。
  • 我没听懂在第一次 foreach 迭代后中断,那么为什么要使用 foreach?

标签: c# loops for-loop foreach


【解决方案1】:

在您的情况下,您正在迭代的列表的大小应该相等,或者您应该告诉我们您真正想要做什么。

但是对于这个特定的问题,您可以这样做:

for (int count = 0; count < countMaster; count++)
{
    foreach (string TemplateName in TemplateList)
    {
        dt.TableName = TemplateName;
        ds.Tables.Add(dt);

        count++;
    }
}

注意:但我必须说这没有多大意义。你最好试着告诉我们你真正想要做什么。

【讨论】:

    【解决方案2】:

    你为什么不做以下来满足你的要求,

    foreach (string TemplateName in TemplateList)
    {
        if (TemplateList.IndexOf(TemplateName) < countMaster)
        {
            dt.TableName = TemplateName;
            ds.Tables.Add(dt);
        }
    }
    

    希望这会有所帮助...

    【讨论】:

      【解决方案3】:

      我不是 100% 确定您在问什么,但您是否想从每个循环中执行一次?对我来说听起来像是 Zip 操作。

      var xs = new[] { 1, 2, 3 };
      var xs2 = new[] { 4, 5, 6 };
      
      var results = xs.Zip(xs2, (i,i2) => i + ":" + i2);
      

      输出:

      1:4 
      2:5 
      3:6 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-12
        • 2019-04-04
        • 2018-08-20
        • 1970-01-01
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多