【问题标题】:copy only the first column with data from one DataTable to another new DataTable仅将包含数据的第一列从一个 DataTable 复制到另一个新 DataTable
【发布时间】:2019-03-18 17:53:48
【问题描述】:

我的DataTable 有很多超过 35 列的列。其中我想将第一列“SYMBOL_QA”数据复制到另一个新的DataTable

我在互联网上搜索但没有找到任何合适的方法。我发现的一种方法是按原样复制整个DataTable,然后删除不需要的列。但是我有 35 列,将它们一一删除并不是一个好方法。

protected void SendDataTable(DataTable dSource)
{
    DataTable dTarget = new DataTable();
    dTarget.Columns.Add(new DataColumn("SYMBOL_QA_"));
    int rowIdx = 0;
    dTarget.AsEnumerable().All(row => { row["SYMBOL_QA_"] = dSource.Rows[rowIdx++]["SYMBOL_QA"]; return true; });

}

此代码块不起作用。我该怎么做?

【问题讨论】:

标签: c# asp.net


【解决方案1】:

我认为最简单的方法是通过DataView.ToTable 方法来完成您的要求

DataTable dTarget = dSource.DefaultView.ToTable(false, "SYMBOL_QA");

它只是一行,它

根据现有数据中的行创建并返回一个新的 DataTable 数据视图。

【讨论】:

    【解决方案2】:
    protected DataTable CopyColumn(DataTable sourceTable, string columnName)
    {
        DataTable result = new DataTable();
        result.Columns.Add(new DataColumn(columnName));
    
        foreach(DataRow sourceRow in sourceTable.Rows)
        {
             var destRow = result.NewRow();
             destRow[columnName] = sourceRow[columnName];
             result.Rows.Add(destRow);
        }
        return result;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      相关资源
      最近更新 更多