C#位置()处没有行

C# There is no row at position ()

我在处理现有的合并数据时遇到问题table 我似乎无法理解代码

我继承的所有其他代码,包括我必须修改的代码,都可以正常工作,但有一个例外。我有 2 个数据 tables,第一个 table 是通过 .csv 提供的。第二个 table 来自其他来源。

我遇到的问题是下面的代码 return 出现以下错误:

There is no row at position (end position)

我知道我应该在第二个 table 中寻求补救空值,但我需要 return 剩余代码中的空值。

上面的错误是用for (int i-0) 行产生的吗?如果是这样,我将如何修改此合并操作?

    DataTable netb = MergeDataTables(dt, temp);
    return netb;

    static DataTable MergeDataTables(DataTable table1, DataTable table2)
    {
        DataTable table3 = table1.Copy();
        
        foreach (DataColumn dc in table2.Columns)
        {
            table3.columns.Add(dc.ColumnName).DataType = dc.DataType;
        }

        for (int i = 0; < table3.Rows.Count; i++)
        {
            foreach (DataColumn dc in table2.Columns)
            {
                string col = dc.ColumnName;
                table3.Rows[i][col] = table2.Rows[i][col];
            }
        }

我注意到您的 for 循环缺少 i,无法完成 i < table3.Rows.Count;

for (int i = 0; i < table3.Rows.Count; i++)

嘿@BrianG 可能你的 table3 比 table2 大,假设你的 table3 有 10 行而 table2 有 5 行,当你在第七次迭代时,你的 table2 将尝试到达没有到达的位置 6存在于 table2 中,然后它会抛出错误。您必须为此创建验证。