Quero converter um DataRow
array em DataTable
... Qual é a maneira mais simples de fazer isso?
98
Por que não iterar por meio de sua matriz DataRow e adicionar (usando DataRow.ImportRow, se necessário, para obter uma cópia da DataRow), algo como:
foreach (DataRow row in rowArray) {
dataTable.ImportRow(row);
}
Certifique-se de que sua dataTable tenha o mesmo esquema que a DataRows em sua matriz DataRow.
DataTable dataTable = new DataTable(); dataTable.ImportRow(dataRow); MyControl.DataSource = dataTable;
rowArray.CopyToDataTable();
porque isso mantém o esquema da tabela e não o está substituindo por um novo objeto de tabela!Para .Net Framework 3.5+
Mas se não houver linhas na matriz, isso pode causar erros como A fonte não contém DataRows . Portanto, se você decidir usar este método
CopyToDataTable()
, deve verificar o array para saber se ele tem datarows ou não.Referência disponível no MSDN: Método DataTableExtensions.CopyToDataTable (IEnumerable)
fonte
copyToDataTable()
? Não o encontrei em .net 2.0copyToDataTable()
método cria uma cópia perfeita das colunas das linhas selecionadas, enquanto odatatable.ImportRow(row)
método nãofonte
Input array is longer than the number of columns in this table.
". Erro de versão com clone: "Unable to cast object of type 'System.Data.DataRow' to type 'System.IConvertible'.Couldn't store <System.Data.DataRow> in StoreOrder Column. Expected type is Int64.
" Observação:StoreOrder
é a primeira coluna no esquema da tabela. Parece que ele está tentando colocar o datarow inteiro na primeira colunaOutra maneira é usar um DataView
fonte
A maneira simples é:
fonte
fonte
fonte
fonte
.Net 3.5+ adicionado DataTableExtensions, use o método DataTableExtensions.CopyToDataTable
Para array datarow apenas use .CopyToDataTable () e ele retornará a tabela de dados.
Para uso em um único datarow
fonte
Aqui está a solução. Deve funcionar bem.
fonte
No caso de alguém precisar em VB.NET:
fonte
Você pode usar System.Linq assim:
fonte
Você precisa clonar a estrutura da tabela de dados primeiro, em seguida, importar as linhas usando o loop for
fonte
fonte