Ler em inglês

Compartilhar via


DataTableExtensions.CopyToDataTable Método

Definição

Retorna um DataTable que contém cópias dos objetos DataRow, dado um objeto IEnumerable<T> de entrada.

Sobrecargas

CopyToDataTable<T>(IEnumerable<T>)

Retorna um DataTable que contém cópias dos objetos DataRow, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Copia objetos DataRow no DataTable especificado, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Copia objetos DataRow no DataTable especificado, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.

CopyToDataTable<T>(IEnumerable<T>)

Origem:
DataTableExtensions.cs
Origem:
DataTableExtensions.cs
Origem:
DataTableExtensions.cs

Retorna um DataTable que contém cópias dos objetos DataRow, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.

C#
public static System.Data.DataTable CopyToDataTable<T> (this System.Collections.Generic.IEnumerable<T> source) where T : System.Data.DataRow;

Parâmetros de tipo

T

O tipo de objetos na sequência de origem, normalmente DataRow.

Parâmetros

source
IEnumerable<T>

A sequência de origem IEnumerable<T>.

Retornos

Um DataTable que contém a sequência de entrada como o tipo de objetos DataRow.

Exceções

A sequência de origem IEnumerable<T> é null e não é possível criar uma nova tabela.

Um DataRow na sequência de origem tem um estado de Deleted.

A sequência de origem não contém nenhum objeto DataRow.

Um DataRow na sequência de origem é null.

Exemplos

O exemplo a seguir consulta a tabela SalesOrderHeader para pedidos após 8 de agosto de 2001 e usa o CopyToDataTable método para criar um DataTable a partir dessa consulta. O DataTable é então associado a um BindingSource, que age como o proxy para um DataGridView.

C#
// Bind the System.Windows.Forms.DataGridView object
// to the System.Windows.Forms.BindingSource object.
dataGridView.DataSource = bindingSource;

// Fill the DataSet.
DataSet ds = new DataSet();
ds.Locale = CultureInfo.InvariantCulture;
FillDataSet(ds);

DataTable orders = ds.Tables["SalesOrderHeader"];

// Query the SalesOrderHeader table for orders placed
// after August 8, 2001.
IEnumerable<DataRow> query =
    from order in orders.AsEnumerable()
    where order.Field<DateTime>("OrderDate") > new DateTime(2001, 8, 1)
    select order;

// Create a table from the query.
DataTable boundTable = query.CopyToDataTable<DataRow>();

// Bind the table to a System.Windows.Forms.BindingSource object,
// which acts as a proxy for a System.Windows.Forms.DataGridView object.
bindingSource.DataSource = boundTable;

Comentários

O parâmetro T do parâmetro source de entrada só pode ser do tipo DataRow ou de um tipo derivado de DataRow.

A sequência de entrada pode ser qualquer IEnumerable<T> origem, não apenas uma consulta ou uma consulta em um DataTable. Observe que, se a sequência de origem for uma consulta, chamar esse operador forçará a execução imediata. Enumerar a sequência de origem também pode fazer com que exceções sejam geradas.

O esquema da tabela de destino baseia-se no esquema da primeira DataRow linha na sequência de origem. Os metadados da tabela são extraídos dos DataRow metadados e dos valores de tabela dos valores de coluna do DataRow. Para um tipo DataTable, os tipos não são preservados. Os dados e o esquema são transferidos, mas as linhas resultantes da tabela de saída não serão do tipo digitado DataRow . As RowState propriedades e RowError não são preservadas durante a cópia da origem DataRow para a retornada DataTable.

Quando uma referência nula ou um tipo anulável com um valor de nulo é encontrado em uma fonte DataRow, esse método substitui o valor no destino DataTable por um valor de Value.

A tabela gerada retornada pelo método tem o nome da tabela padrão. Se você quiser nomear o DataTable, anexá-lo a um DataSetou executar qualquer outra DataTable operação específica, deverá fazê-lo depois que a tabela for criada e retornada.

Para obter mais informações, consulte Criando uma datatable de uma consulta.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.1

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Origem:
DataTableExtensions.cs
Origem:
DataTableExtensions.cs
Origem:
DataTableExtensions.cs

Copia objetos DataRow no DataTable especificado, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.

C#
public static void CopyToDataTable<T> (this System.Collections.Generic.IEnumerable<T> source, System.Data.DataTable table, System.Data.LoadOption options) where T : System.Data.DataRow;

Parâmetros de tipo

T

O tipo de objetos na sequência de origem, normalmente DataRow.

Parâmetros

source
IEnumerable<T>

A sequência de origem IEnumerable<T>.

table
DataTable

O DataTable de destino.

options
LoadOption

Uma enumeração LoadOption que especifica as opções de carga do DataTable.

Exceções

Os objetos DataRow copiados não se ajustam ao esquema do DataTable de destino.

A sequência de origem IEnumerable<T> é null ou o destino DataTable é null.

Um DataRow na sequência de origem tem um estado de Deleted.

A sequência de origem não contém nenhum objeto DataRow.

Um DataRow na sequência de origem é null.

Comentários

O parâmetro T do parâmetro source de entrada só pode ser do tipo DataRowou de um tipo derivado de DataRow.

A sequência de entrada pode ser qualquer IEnumerable<T> origem, não apenas uma consulta em um DataTable. Observe que, se a sequência de origem for uma consulta, chamar esse operador forçará a execução imediata. Enumerar a sequência de origem também pode fazer com que exceções sejam geradas.

O esquema da tabela de destino baseia-se no esquema da primeira DataRow linha na sequência de origem. Os metadados da tabela são extraídos dos DataRow metadados e dos valores de tabela dos valores de coluna do DataRow. Para um tipo DataTable, os tipos não são preservados. Os dados e o esquema são transferidos, mas as linhas resultantes da tabela de saída não serão do tipo digitado DataRow . As RowState propriedades e RowError não são preservadas durante a cópia da origem DataRow para a retornada DataTable.

Quando uma referência nula ou um tipo anulável com um valor de nulo é encontrado em uma fonte DataRow, esse método substitui o valor no destino DataTable por um valor de Value.

A tabela gerada retornada pelo método tem o nome da tabela padrão. Se você quiser nomear o DataTable, anexá-lo a um DataSetou executar qualquer outra DataTable operação específica, deverá fazê-lo depois que a tabela for criada e retornada.

Para obter mais informações, consulte Criando uma datatable de uma consulta.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.1

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Origem:
DataTableExtensions.cs
Origem:
DataTableExtensions.cs
Origem:
DataTableExtensions.cs

Copia objetos DataRow no DataTable especificado, dado um objeto IEnumerable<T> de entrada em que o parâmetro genérico T é DataRow.

C#
public static void CopyToDataTable<T> (this System.Collections.Generic.IEnumerable<T> source, System.Data.DataTable table, System.Data.LoadOption options, System.Data.FillErrorEventHandler errorHandler) where T : System.Data.DataRow;
C#
public static void CopyToDataTable<T> (this System.Collections.Generic.IEnumerable<T> source, System.Data.DataTable table, System.Data.LoadOption options, System.Data.FillErrorEventHandler? errorHandler) where T : System.Data.DataRow;

Parâmetros de tipo

T

O tipo de objetos na sequência de origem, normalmente DataRow.

Parâmetros

source
IEnumerable<T>

A sequência de origem IEnumerable<T>.

table
DataTable

O DataTable de destino.

options
LoadOption

Uma enumeração LoadOption que especifica as opções de carga do DataTable.

errorHandler
FillErrorEventHandler

Um delegado FillErrorEventHandler que representa o método que vai manipular um erro.

Exceções

Os objetos DataRow copiados não se ajustam ao esquema do DataTable de destino.

A sequência de origem IEnumerable<T> é null ou o destino DataTable é null.

Um DataRow na sequência de origem tem um estado de Deleted.

- ou -

A sequência de origem não contém nenhum objeto DataRow.

- ou -

Um DataRow na sequência de origem é null.

Comentários

O parâmetro T do parâmetro source de entrada só pode ser do tipo DataRowou de um tipo derivado de DataRow.

A sequência de entrada pode ser qualquer IEnumerable<T> origem, não apenas uma consulta em um DataTable. Observe que, se a sequência de origem for uma consulta, chamar esse operador forçará a execução imediata. Enumerar a sequência de origem também pode fazer com que exceções sejam geradas.

O esquema da tabela de destino baseia-se no esquema da primeira DataRow linha na sequência de origem. Os metadados da tabela são extraídos dos DataRow metadados e dos valores de tabela dos valores de coluna do DataRow. Para um tipo DataTable, os tipos não são preservados. Os dados e o esquema são transferidos, mas as linhas resultantes da tabela de saída não serão do tipo digitado DataRow . As RowState propriedades e RowError não são preservadas durante a cópia da origem DataRow para a retornada DataTable.

Quando uma referência nula ou um tipo anulável com um valor de nulo é encontrado em uma fonte DataRow, esse método substitui o valor no destino DataTable por um valor de Value.

A tabela gerada retornada pelo método tem o nome da tabela padrão. Se você quiser nomear o DataTable, anexá-lo a um DataSetou executar qualquer outra DataTable operação específica, deverá fazê-lo depois que a tabela for criada e retornada.

Se uma exceção for gerada durante a cópia de uma linha de dados na tabela de destino, como uma exceção de restrição, o errorHandler delegado será chamado. Um FillErrorEventArgs é passado para o errorHandler delegado com os seguintes valores:

  • A Values propriedade é definida como uma cópia dos dados de origem.

  • A DataTable propriedade é definida como o destino DataTable.

  • A Errors propriedade é definida como a exceção capturada.

A Continue propriedade é lida após o retorno da chamada delegada. Se a Continue propriedade for true, a sequência de origem continuará a ser enumerada e carregada na tabela de dados. Se a Continue propriedade for false, a exceção original será gerada do CopyToDataTable método .

Para obter mais informações, consulte Criando uma datatable de uma consulta.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.1