データ行配列をデータテーブルに変換する簡単な方法
質問
を変換したいです DataRow
配列に DataTable
...これを行う最も簡単な方法は何ですか?
解決
なぜない反復あなたのDataRow配列を通って、(必要に応じてのDataRowのコピーを取得するために、DataRow.ImportRowを使用して)追加し、何かます:
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
必ずお使いのdataTableは、あなたのDataRow配列内でDataRowと同じスキーマを持っていることを確認します。
他のヒント
.Net Framework 3.5以降の場合
DataTable dt = new DataTable();
DataRow[] dr = dt.Select("Your string");
DataTable dt1 = dr.CopyToDataTable();
ただし、配列に行がない場合、次のようなエラーが発生する可能性があります。 ソースには DataRow が含まれていません. 。したがって、この方法を使用することにした場合は、 CopyToDataTable()
, 、配列をチェックして、データ行があるかどうかを確認する必要があります。
if (dr.Length > 0)
DataTable dt1 = dr.CopyToDataTable();
MSDN で入手可能なリファレンス:DataTableExtensions.CopyToDataTable メソッド (IEnumerable)
DataTable dt = new DataTable();
DataRow[] dr = (DataTable)dsData.Tables[0].Select("Some Criteria");
dt.Rows.Add(dr);
もう一つの方法は、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");
簡単な方法は次のとおりです。
// 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());
DataTable dt = new DataTable();
foreach (DataRow dr in drResults)
{
dt.ImportRow(dr);
}
DataTable dt = myDataRowCollection.CopyToDataTable<DataRow>();
DataTable Assetdaterow =
(
from s in dtResourceTable.AsEnumerable()
where s.Field<DateTime>("Date") == Convert.ToDateTime(AssetDate)
select s
).CopyToDataTable();
ここでのソリューションです。それは罰金を動作するはずです。
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);
}
Incaseの誰もがVB.NETでそれを必要とします
Dim dataRow as DataRow
Dim yourNewDataTable as new datatable
For Each dataRow In yourArray
yourNewDataTable.ImportRow(dataRow)
Next
純3.5+添加DataTableExtensions、使用DataTableExtensions.CopyToDataTable方法
DataRow配列がちょうど(.CopyToDataTableを使用するために、)、それがデータテーブルを返します。
単一のDataRow使用する場合
new DataRow[] { myDataRow }.CopyToDataTable()
あなたはこのようSystem.Linqのを使用することができます:
if (dataRows != null && dataRows.Length > 0)
{
dataTable = dataRows.AsEnumerable().CopyToDataTable();
}
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);
}
あなたはまず、データテーブルの構造のクローンを作成する必要がforループを使用してインポート行
DataTable dataTable =dtExisting.Clone();
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
所属していません StackOverflow