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);
    }

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

  • 相关阅读:
    Python 面向对象(类与对象)
    修改Centos文 7件夹所在组及权限(不同用户共用一个文件夹)
    CGPoint,CGSize,CGRect
    关于投资币圈的思考和微信群问答干货整理
    数字货币合约交易基础知识
    比特币成长大事记
    健康医疗笔记(四)癌症知识
    ​阿德勒心理学《被讨厌的勇气》一切烦恼皆源于人际关系
    免费学术论文网站Sci-Hub
    数字货币交易所开发笔记3-撮合引擎开发
  • 原文地址:https://www.cnblogs.com/strive-19970713/p/13656175.html
Copyright © 2011-2022 走看看