【问题标题】:How to stop foreach loop when the row is blank [duplicate]当行为空白时如何停止foreach循环[重复]
【发布时间】:2021-10-26 16:15:21
【问题描述】:

我的代码可以导入 Excel 电子表格并从每一列和每一行获取数据。问题是即使只有 19 行包含数据,它也会导入 120 行。如果下一行为空白,我如何停止导入,因为我不知道每个 excel 导入可能有多少行。谢谢

       DataSets = new ImportList().ImportFromExcel();

        var list = new List<string>();
        foreach (DataTable table in DataSets[0].Tables)
        {
            foreach (DataRow row in table.Rows)
            {
                list.Add(row["LAST NAME"]?.ToString().Trim() ?? row.ItemArray[7]?.ToString().Trim());
            }
        }

【问题讨论】:

  • 所以问题出在ImportFromExcel 上,您没有显示?如果您已经解决了问题的根源,则无需解决症状。
  • 如果您想修复症状,请添加:if(row.ItemArray.All(o =&gt; string.IsNullOrWhiteSpace(o?.ToString()))) break;

标签: c# excel list


【解决方案1】:

我会这样做:

    DataSets = new ImportList().ImportFromExcel();

    var list = new List<string>();
    foreach (DataTable table in DataSets[0].Tables)
    {
        foreach (DataRow row in table.Rows)
        {
            if (row["LAST NAME"]?.ToString().Trim() == string.empty) return; //OR BREAK
            list.Add(row["LAST NAME"]?.ToString().Trim() ?? row.ItemArray[7]?.ToString().Trim());
        }
    }

通过在添加之前测试单元格的值,甚至在需要时退出循环(返回或中断)

【讨论】:

  • return 错误
  • 是的 BREAK 是正确的关键字对不起
【解决方案2】:

您可以在 foreach 循环中使用 if 语句中的 break;

试试看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2013-06-13
    • 2021-10-23
    • 2013-07-12
    • 2013-10-15
    • 1970-01-01
    • 2017-11-01
    相关资源
    最近更新 更多