zoukankan      html  css  js  c++  java
  • C# 该行已经属于另一个表 的解决方法

    当我们使用DataTable的时候,取到其中的一行dataRow,然后将其Add()到另外的一个表。如果直接进行Add()的话,就会出现一个异常 "此行已经属于另一个表"。

    简单例子:

     1         private void OperateDataTable()
     2         {
     3             DataTable dataTableA = new DataTable("Table A");
     4             DataColumn dataColumn;
     5             DataRow dataRow;
     6 
     7             dataColumn = new DataColumn();
     8             dataColumn.ColumnName = "ID";
     9             dataColumn.DataType = typeof(int); //Type.GetType("System.Int32");
    10             dataTableA.Columns.Add(dataColumn);
    11 
    12             dataColumn = new DataColumn();
    13             dataColumn.ColumnName = "Name";
    14             dataColumn.DataType = typeof(string);
    15             dataTableA.Columns.Add(dataColumn);
    16 
    17             for (int i = 0; i < 10; i++)
    18             {
    19                 dataRow = dataTableA.NewRow();
    20 
    21                 dataRow["ID"] = i;
    22                 dataRow["Name"] = $"{i}_Name";
    23 
    24                 dataTableA.Rows.Add(dataRow);
    25             }
    26 
    27             DataTable dataTableB = new DataTable("Table B");
    28 
    29             dataColumn = new DataColumn();
    30             dataColumn.ColumnName = "ID";
    31             dataColumn.DataType = typeof(int); //Type.GetType("System.Int32");
    32             dataTableB.Columns.Add(dataColumn);
    33 
    34             dataColumn = new DataColumn();
    35             dataColumn.ColumnName = "Name";
    36             dataColumn.DataType = typeof(string);
    37             dataTableB.Columns.Add(dataColumn);
    38 
    39             for (int i = 10; i < 20; i++)
    40             {
    41                 dataRow = dataTableB.NewRow();
    42 
    43                 dataRow["ID"] = i;
    44                 dataRow["Name"] = $"{i}_Name";
    45 
    46                 dataTableB.Rows.Add(dataRow);
    47             }
    48 
    49             if (dataTableB.Rows.Count > 0 && dataTableB.Rows[0] != null)
    50             {
    51                 DataRow row = dataTableB.Rows[0];
    52 
    53                 dataTableA.Rows.Add(row);  // 这里会出异常
    54             }
    55         }        

    解决方案:

    if (dataTableB.Rows.Count > 0 && dataTableB.Rows[0] != null)
    {
        DataRow row = dataTableB.Rows[0];
    
        dataTableA.Rows.Add(row.ItemArray);
    }

    这样就可以顺利运行,并解决啦!

  • 相关阅读:
    C&C++ recap
    将Rmarkdown文件转为pdf文件
    ChIP-seq Peak caller MACS index out of range问题解决
    R正则表达式的问题
    nodejs+cheerio爬虫测试
    jetty更换图标
    MyEclipse无法生成class文件
    JPA @OneToOne stackoverflow
    jquery-validate--使用由于疏忽导致的问题1(input失去焦点没有被验证,submit才验证)
    组合框
  • 原文地址:https://www.cnblogs.com/strive-19970713/p/13656175.html
Copyright © 2011-2022 走看看