首页 文章

将datarow数组转换为datatable的简单方法

提问于
浏览
89

我想将 DataRow 数组转换为 DataTable ...最简单的方法是什么?

13 回答

  • 1

    为什么不迭代你的DataRow数组并添加(如果需要,使用DataRow.ImportRow来获取DataRow的副本),例如:

    foreach (DataRow row in rowArray) {
       dataTable.ImportRow(row);
    }
    

    确保您的dataTable与DataRow阵列中的DataRows具有相同的架构 .

  • 2

    For .Net Framework 3.5+

    DataTable dt = new DataTable();
    DataRow[] dr = dt.Select("Your string");
    DataTable dt1 = dr.CopyToDataTable();
    

    但是如果数组中没有行,则可能导致错误,例如source不包含DataRows . 因此,如果您决定使用此方法 CopyToDataTable() ,则应检查数组以确定它是否具有数据行 .

    if (dr.Length > 0)
        DataTable dt1 = dr.CopyToDataTable();
    

    MSDN上的参考资料:DataTableExtensions.CopyToDataTable Method (IEnumerable)

  • 9

    另一种方法是使用DataView

    // Create a DataTable
    DataTable table = new DataTable()
    ...
    
    // Filter and Sort expressions
    string expression = "[Birth Year] >= 1983"; 
    string sortOrder = "[Birth Year] ASC";
    
    // Create a DataView using the table as its source and the filter and sort expressions
    DataView dv = new DataView(table, expression, sortOrder, DataViewRowState.CurrentRows);
    
    // Convert the DataView to a DataTable
    DataTable new_table = dv.ToTable("NewTableName");
    
  • 7
    DataTable dt = new DataTable(); 
    
    DataRow[] dr = (DataTable)dsData.Tables[0].Select("Some Criteria");
    
    dt.Rows.Add(dr);
    
  • 2

    Simple way is:

    // dtData is DataTable that contain data
    DataTable dt = dtData.Select("Condition=1").CopyToDataTable();
    
    // or existing typed DataTable dt
    dt.Merge(dtData.Select("Condition=1").CopyToDataTable());
    
  • 3
    DataTable dt = new DataTable();
    foreach (DataRow dr in drResults)
    { 
        dt.ImportRow(dr);
    }
    
  • 0
    DataTable dt = myDataRowCollection.CopyToDataTable<DataRow>();
    
  • 4

    这是解决方案 . 它应该工作正常 .

    DataTable dt = new DataTable();
    dt = dsData.Tables[0].Clone();
    DataRows[] drResults = dsData.Tables[0].Select("ColName = 'criteria');
    
    foreach(DataRow dr in drResults)
    {
        object[] row = dr.ItemArray;
        dt.Rows.Add(row);
    }
    
  • 1
    DataTable Assetdaterow =
        (
            from s in dtResourceTable.AsEnumerable()
            where s.Field<DateTime>("Date") == Convert.ToDateTime(AssetDate)
            select s
        ).CopyToDataTable();
    
  • 80

    任何人都需要它在VB.NET中:

    Dim dataRow as DataRow
    Dim yourNewDataTable as new datatable
    For Each dataRow In yourArray
         yourNewDataTable.ImportRow(dataRow)
    Next
    
  • 10

    .Net 3.5添加了DataTableExtensions,使用DataTableExtensions.CopyToDataTable方法

    对于datarow数组,只需使用.CopyToDataTable(),它将返回数据表 .

    对于单数据流使用

    new DataRow[] { myDataRow }.CopyToDataTable()
    
  • 176

    您可以像这样使用System.Linq:

    if (dataRows != null && dataRows.Length > 0)
    {
       dataTable = dataRows.AsEnumerable().CopyToDataTable();
    }
    
  • 0
    DataTable dataTable = new DataTable();
    dataTable = OldDataTable.Tables[0].Clone();
    foreach(DataRow dr in RowData.Tables[0].Rows)
    {
     DataRow AddNewRow = dataTable.AddNewRow();
     AddNewRow.ItemArray = dr.ItemArray;
     dataTable.Rows.Add(AddNewRow);
    }
    

相关问题