首页 文章

将行从一个Datatable复制到另一个DataTable?

提问于
浏览
131

如何将特定行从DataTable复制到c#中的另一个Datable?会有不止一行 .

8 回答

  • 3

    试试这个

    String matchString="ID0001"//assuming we have to find rows having key=ID0001
        DataTable dtTarget = new DataTable();
        dtTarget = dtSource.Clone();
        DataRow[] rowsToCopy;
        rowsToCopy = dtSource.Select("key='" + matchString + "'");
        foreach (DataRow temp in rowsToCopy)
        {
            dtTarget.ImportRow(temp);
        }
    
  • 16

    由于其他帖子,这是我能得到的最短的:

    DataTable destTable = sourceTable.Clone();
    sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));
    
  • 77

    受支持:4,3.5 SP1,您现在可以只调用该对象上的方法 .

    DataTable dataTable2 = dataTable1.Copy()
    
  • 0
    foreach (DataRow dr in dataTable1.Rows) {
        if (/* some condition */)
            dataTable2.Rows.Add(dr.ItemArray);
    }
    

    上面的示例假定 dataTable1dataTable2 具有相同的数量,类型和列顺序 .

  • 1

    看看这个,你可能会喜欢它(以前请将table1克隆到table2):

    table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);
    

    要么:

    table1.AsEnumerable().Where ( yourcondition  ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);
    
  • 213

    下面的示例将是复制一行的最快方法 . 正在根据列名复制每个单元格 . 如果您不需要复制特定单元格,请尝试捕获或添加if . 如果你要复制超过1行,然后循环下面的代码 .

    DataRow dr = dataset1.Tables[0].NewRow();
    for (int i = 0; i < dataset1.Tables[1].Columns.Count; i++)
    {
        dr[dataset1.Tables[1].Columns[i].ColumnName] = dataset1.Tables[1].Rows[0][i];
    }
    
    datasetReport.Tables[0].Rows.Add(dr);
    

    dataset1.Tables [1] .Rows [ 0 ] [i];将索引0更改为指定的行索引,或者如果要循环或者它是合乎逻辑的,则可以使用变量

  • 8
    private void CopyDataTable(DataTable table){
         // Create an object variable for the copy.
         DataTable copyDataTable;
         copyDataTable = table.Copy();
         // Insert code to work with the copy.
     }
    
  • 9

    将指定的行从表复制到另一个

    // here dttablenew is a new Table  and dttableOld is table Which having the data 
    
    dttableNew  = dttableOld.Clone();  
    
    foreach (DataRow drtableOld in dttableOld.Rows)
    {
       if (/*put some Condition */)
       {
          dtTableNew.ImportRow(drtableOld);
       }
    }
    

相关问题