104

DataRow配列を変換したいDataTable...これを行う最も簡単な方法は何ですか?

4

14 に答える 14

204

.Net Framework 3.5 以降の場合

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

ただし、配列に行がない場合、The source contains no DataRowsなどのエラーが発生する可能性があります。したがって、この方法を使用する場合CopyToDataTable()は、配列をチェックしてデータ行があるかどうかを確認する必要があります。

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

MSDN で入手可能なリファレンス: DataTableExtensions.CopyToDataTable メソッド (IEnumerable)

于 2010-12-10T12:28:37.963 に答える
97

DataRow 配列を反復処理して追加してみませんか (必要に応じて、DataRow.ImportRow を使用して DataRow のコピーを取得します)、次のようにします。

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

dataTable が DataRow 配列の DataRows と同じスキーマを持っていることを確認してください。

于 2010-01-23T08:40:59.480 に答える
12
DataTable dt = new DataTable(); 

DataRow[] dr = (DataTable)dsData.Tables[0].Select("Some Criteria");

dt.Rows.Add(dr);
于 2010-01-23T08:02:04.563 に答える
11

別の方法は、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");
于 2011-08-11T11:56:28.817 に答える
10

簡単な方法は次のとおりです。

// 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());
于 2014-05-20T08:23:11.583 に答える
5
DataTable dt = new DataTable();
foreach (DataRow dr in drResults)
{ 
    dt.ImportRow(dr);
}   
于 2012-10-23T17:59:54.667 に答える
5
DataTable dt = myDataRowCollection.CopyToDataTable<DataRow>();
于 2012-07-23T19:07:55.450 に答える
4

.Net 3.5+ は DataTableExtensions を追加し、DataTableExtensions.CopyToDataTable メソッドを使用します

データ行配列の場合、.CopyToDataTable() を使用するだけで、データテーブルが返されます。

単一のデータ行用

new DataRow[] { myDataRow }.CopyToDataTable()
于 2016-08-23T16:16:06.837 に答える
2

これが解決策です。それはうまくいくはずです。

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);
} 
于 2011-06-29T06:21:39.790 に答える
1

最初にデータテーブルの構造を複製し、次にforループを使用して行をインポートする必要があります

DataTable dataTable =dtExisting.Clone();
foreach (DataRow row in rowArray) {
   dataTable.ImportRow(row);
}
于 2019-08-04T14:57:01.477 に答える