DataTableExtensions.CopyToDataTable Método

Definición

Devuelve un objeto DataTable que contiene copias de los objetos DataRow, dado un objeto IEnumerable<T> de entrada.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object.

Sobrecargas

CopyToDataTable<T>(IEnumerable<T>)

Devuelve un objeto DataTable que contiene copias de los objetos DataRow, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es DataRow.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

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

Copia objetos DataRow en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

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

Copia objetos DataRow en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>)

Devuelve un objeto DataTable que contiene copias de los objetos DataRow, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es DataRow.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

public:
generic <typename T>
 where T : System::Data::DataRow[System::Runtime::CompilerServices::Extension]
 static System::Data::DataTable ^ CopyToDataTable(System::Collections::Generic::IEnumerable<T> ^ source);
public static System.Data.DataTable CopyToDataTable<T> (this System.Collections.Generic.IEnumerable<T> source) where T : System.Data.DataRow;
static member CopyToDataTable : seq<'T (requires 'T :> System.Data.DataRow)> -> System.Data.DataTable (requires 'T :> System.Data.DataRow)
<Extension()>
Public Function CopyToDataTable(Of T As DataRow) (source As IEnumerable(Of T)) As DataTable

Parámetros de tipo

T

Tipo de objetos de la secuencia de origen, normalmente DataRow.The type of objects in the source sequence, typically DataRow.

Parámetros

source
IEnumerable<T>

Secuencia IEnumerable<T> de origen.The source IEnumerable<T> sequence.

Devoluciones

DataTable que contiene la secuencia de entrada como tipo de los objetos DataRow.A DataTable that contains the input sequence as the type of DataRow objects.

Excepciones

La secuencia IEnumerable<T> de origen es null y no se puede crear una tabla nueva.The source IEnumerable<T> sequence is null and a new table cannot be created.

El estado de un objeto DataRow de la secuencia de origen es Deleted.A DataRow in the source sequence has a state of Deleted.

La secuencia de origen no contiene ningún objeto DataRow.The source sequence does not contain any DataRow objects.

El valor de un objeto DataRow de la secuencia de origen es null.A DataRow in the source sequence is null.

Ejemplos

En el ejemplo siguiente se consulta la tabla SalesOrderHeader para pedidos después del 8 de agosto de 2001 y se usa el método CopyToDataTable para crear un DataTable a partir de esa consulta.The following example queries the SalesOrderHeader table for orders after August 8, 2001, and uses the CopyToDataTable method to create a DataTable from that query. A continuación, se enlaza DataTable a un BindingSource, que actúa como proxy para un objeto DataGridView.The DataTable is then bound to a BindingSource, which acts as proxy for a DataGridView.

// 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;
' Bind the System.Windows.Forms.DataGridView object
' to the System.Windows.Forms.BindingSource object.
dataGridView.DataSource = bindingSource

' Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
' See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)

Dim orders As DataTable = ds.Tables("SalesOrderHeader")

' Query the SalesOrderHeader table for orders placed 
'  after August 8, 2001.
Dim query = _
    From order In orders.AsEnumerable() _
    Where order.Field(Of DateTime)("OrderDate") > New DateTime(2001, 8, 1) _
    Select order

' Create a table from the query.
Dim boundTable As DataTable = query.CopyToDataTable()

' 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

Comentarios

El parámetro T del parámetro de entrada source solo puede ser de tipo DataRow o un tipo derivado de DataRow.The parameter T of the input parameter source can only be of type DataRow or a type derived from DataRow.

La secuencia de entrada puede ser cualquier origen IEnumerable<T>, no solo una consulta o una consulta sobre un DataTable.The input sequence can be any IEnumerable<T> source, not only a query or a query over a DataTable. Tenga en cuenta que si la secuencia de origen es una consulta, al llamar a este operador se forzará la ejecución inmediata.Note that if the source sequence is a query, calling this operator will force immediate execution. Enumerar la secuencia de origen también puede provocar que se produzcan excepciones.Enumerating the source sequence can also cause exceptions to be thrown.

El esquema de la tabla de destino se basa en el esquema de la primera fila DataRow de la secuencia de origen.The schema of the destination table is based on the schema of the first DataRow row in the source sequence. Los metadatos de la tabla se extraen de los metadatos DataRow y los valores de la tabla de los valores de columna del DataRow.The table metadata is extracted from the DataRow metadata and the table values from the column values of the DataRow. En el caso de una @no__t con tipo, los tipos no se conservan.For a typed DataTable, types are not preserved. Los datos y el esquema se transfieren, pero las filas resultantes de la tabla de salida no serán del tipo DataRow con tipo.The data and schema are transferred, but the resulting rows of the output table will not be of the typed DataRow type. Las propiedades RowState y RowError no se conservan durante la copia del origen DataRow al DataTable devuelto.The RowState and RowError properties are not preserved during the copy from the source DataRow to the returned DataTable.

Cuando se encuentra una referencia nula o un tipo que acepta valores NULL con un valor null en un origen DataRow, este método reemplaza el valor en el @no__t de destino-3 con un valor de Value.When a null reference or nullable type with a value of null is found in a source DataRow, this method replaces the value in the destination DataTable with a value of Value.

La tabla generada devuelta por el método tiene el nombre de tabla predeterminado.The generated table returned by the method has the default table name. Si desea asignar un nombre al DataTable, adjuntarlo a un DataSet o realizar cualquier otra operación específica de @no__t 2, debe hacerlo después de crear y devolver la tabla.If you want to name the DataTable, attach it to a DataSet, or perform any other DataTable specific operation, you must do so after the table is created and returned.

Para obtener más información, vea crear un objeto DataTable a partir de una consulta.For more information, see Creating a DataTable From a Query.

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

Copia objetos DataRow en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

public:
generic <typename T>
 where T : System::Data::DataRow[System::Runtime::CompilerServices::Extension]
 static void CopyToDataTable(System::Collections::Generic::IEnumerable<T> ^ source, System::Data::DataTable ^ table, System::Data::LoadOption options);
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;
static member CopyToDataTable : seq<'T (requires 'T :> System.Data.DataRow)> * System.Data.DataTable * System.Data.LoadOption -> unit (requires 'T :> System.Data.DataRow)
<Extension()>
Public Sub CopyToDataTable(Of T As DataRow) (source As IEnumerable(Of T), table As DataTable, options As LoadOption)

Parámetros de tipo

T

Tipo de objetos de la secuencia de origen, normalmente DataRow.The type of objects in the source sequence, typically DataRow.

Parámetros

source
IEnumerable<T>

Secuencia IEnumerable<T> de origen.The source IEnumerable<T> sequence.

table
DataTable

DataTable de destino.The destination DataTable.

options
LoadOption

Enumeración LoadOption que especifica las opciones de carga de DataTable.A LoadOption enumeration that specifies the DataTable load options.

Excepciones

Los objetos DataRow copiados no se ajustan al esquema del objeto DataTable de destino.The copied DataRow objects do not fit the schema of the destination DataTable.

La secuencia IEnumerable<T> de origen es null o el objeto DataTable de destino es null.The source IEnumerable<T> sequence is null or the destination DataTable is null.

El estado de un objeto DataRow de la secuencia de origen es Deleted.A DataRow in the source sequence has a state of Deleted.

La secuencia de origen no contiene ningún objeto DataRow.The source sequence does not contain any DataRow objects.

El valor de un objeto DataRow de la secuencia de origen es null.A DataRow in the source sequence is null.

Comentarios

El parámetro T del parámetro de entrada source solo puede ser de tipo DataRow o un tipo derivado de DataRow.The parameter T of the input parameter source can only be of type DataRow, or a type derived from DataRow.

La secuencia de entrada puede ser cualquier origen IEnumerable<T>, no solo una consulta sobre un DataTable.The input sequence can be any IEnumerable<T> source, not only a query over a DataTable. Tenga en cuenta que si la secuencia de origen es una consulta, al llamar a este operador se forzará la ejecución inmediata.Note that if the source sequence is a query, calling this operator will force immediate execution. Enumerar la secuencia de origen también puede provocar que se produzcan excepciones.Enumerating the source sequence can also cause exceptions to be thrown.

El esquema de la tabla de destino se basa en el esquema de la primera fila DataRow de la secuencia de origen.The schema of the destination table is based on the schema of the first DataRow row in the source sequence. Los metadatos de la tabla se extraen de los metadatos DataRow y los valores de la tabla de los valores de columna del DataRow.The table metadata is extracted from the DataRow metadata and the table values from the column values of the DataRow. En el caso de una @no__t con tipo, los tipos no se conservan.For a typed DataTable, types are not preserved. Los datos y el esquema se transfieren, pero las filas resultantes de la tabla de salida no serán del tipo DataRow con tipo.The data and schema are transferred, but the resulting rows of the output table will not be of the typed DataRow type. Las propiedades RowState y RowError no se conservan durante la copia del origen DataRow al DataTable devuelto.The RowState and RowError properties are not preserved during the copy from the source DataRow to the returned DataTable.

Cuando se encuentra una referencia nula o un tipo que acepta valores NULL con un valor null en un origen DataRow, este método reemplaza el valor en el @no__t de destino-3 con un valor de Value.When a null reference or nullable type with a value of null is found in a source DataRow, this method replaces the value in the destination DataTable with a value of Value.

La tabla generada devuelta por el método tiene el nombre de tabla predeterminado.The generated table returned by the method has the default table name. Si desea asignar un nombre al DataTable, adjuntarlo a un DataSet o realizar cualquier otra operación específica de @no__t 2, debe hacerlo después de crear y devolver la tabla.If you want to name the DataTable, attach it to a DataSet, or perform any other DataTable specific operation, you must do so after the table is created and returned.

Para obtener más información, vea crear un objeto DataTable a partir de una consulta.For more information, see Creating a DataTable From a Query.

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

Copia objetos DataRow en el objeto DataTable especificado, dado un objeto IEnumerable<T> de entrada donde el parámetro T genérico es DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

public:
generic <typename T>
 where T : System::Data::DataRow[System::Runtime::CompilerServices::Extension]
 static void CopyToDataTable(System::Collections::Generic::IEnumerable<T> ^ source, System::Data::DataTable ^ table, System::Data::LoadOption options, System::Data::FillErrorEventHandler ^ errorHandler);
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;
static member CopyToDataTable : seq<'T (requires 'T :> System.Data.DataRow)> * System.Data.DataTable * System.Data.LoadOption * System.Data.FillErrorEventHandler -> unit (requires 'T :> System.Data.DataRow)
<Extension()>
Public Sub CopyToDataTable(Of T As DataRow) (source As IEnumerable(Of T), table As DataTable, options As LoadOption, errorHandler As FillErrorEventHandler)

Parámetros de tipo

T

Tipo de objetos de la secuencia de origen, normalmente DataRow.The type of objects in the source sequence, typically DataRow.

Parámetros

source
IEnumerable<T>

Secuencia IEnumerable<T> de origen.The source IEnumerable<T> sequence.

table
DataTable

DataTable de destino.The destination DataTable.

options
LoadOption

Enumeración LoadOption que especifica las opciones de carga de DataTable.A LoadOption enumeration that specifies the DataTable load options.

errorHandler
FillErrorEventHandler

Delegado FillErrorEventHandler que representa el método que va a controlar un error.A FillErrorEventHandler delegate that represents the method that will handle an error.

Excepciones

Los objetos DataRow copiados no se ajustan al esquema del objeto DataTable de destino.The copied DataRow objects do not fit the schema of the destination DataTable.

La secuencia IEnumerable<T> de origen es null o el objeto DataTable de destino es null.The source IEnumerable<T> sequence is null or the destination DataTable is null.

El estado de un objeto DataRow de la secuencia de origen es Deleted.A DataRow in the source sequence has a state of Deleted.

O bien-or- La secuencia de origen no contiene ningún objeto DataRow.The source sequence does not contain any DataRow objects.

O bien-or- El valor de un objeto DataRow de la secuencia de origen es null.A DataRow in the source sequence is null.

Comentarios

El parámetro T del parámetro de entrada source solo puede ser de tipo DataRow o un tipo derivado de DataRow.The parameter T of the input parameter source can only be of type DataRow, or a type derived from DataRow.

La secuencia de entrada puede ser cualquier origen IEnumerable<T>, no solo una consulta sobre un DataTable.The input sequence can be any IEnumerable<T> source, not only a query over a DataTable. Tenga en cuenta que si la secuencia de origen es una consulta, al llamar a este operador se forzará la ejecución inmediata.Note that if the source sequence is a query, calling this operator will force immediate execution. Enumerar la secuencia de origen también puede provocar que se produzcan excepciones.Enumerating the source sequence can also cause exceptions to be thrown.

El esquema de la tabla de destino se basa en el esquema de la primera fila DataRow de la secuencia de origen.The schema of the destination table is based on the schema of the first DataRow row in the source sequence. Los metadatos de la tabla se extraen de los metadatos DataRow y los valores de la tabla de los valores de columna del DataRow.The table metadata is extracted from the DataRow metadata and the table values from the column values of the DataRow. En el caso de una @no__t con tipo, los tipos no se conservan.For a typed DataTable, types are not preserved. Los datos y el esquema se transfieren, pero las filas resultantes de la tabla de salida no serán del tipo DataRow con tipo.The data and schema are transferred, but the resulting rows of the output table will not be of the typed DataRow type. Las propiedades RowState y RowError no se conservan durante la copia del origen DataRow al DataTable devuelto.The RowState and RowError properties are not preserved during the copy from the source DataRow to the returned DataTable.

Cuando se encuentra una referencia nula o un tipo que acepta valores NULL con un valor null en un origen DataRow, este método reemplaza el valor en el @no__t de destino-3 con un valor de Value.When a null reference or nullable type with a value of null is found in a source DataRow, this method replaces the value in the destination DataTable with a value of Value.

La tabla generada devuelta por el método tiene el nombre de tabla predeterminado.The generated table returned by the method has the default table name. Si desea asignar un nombre al DataTable, adjuntarlo a un DataSet o realizar cualquier otra operación específica de @no__t 2, debe hacerlo después de crear y devolver la tabla.If you want to name the DataTable, attach it to a DataSet, or perform any other DataTable specific operation, you must do so after the table is created and returned.

Si se produce una excepción durante la copia de una fila de datos en la tabla de destino, como una excepción de restricción, se llama al delegado errorHandler.If an exception is thrown during the copy of a data row into the target table, such as a constraint exception, the errorHandler delegate is called. Se pasa un FillErrorEventArgs al delegado errorHandler con los valores siguientes:A FillErrorEventArgs is passed to the errorHandler delegate with the following values:

  • La propiedad Values está establecida en una copia de los datos de origen.The Values property is set to a copy of the source data.

  • La propiedad DataTable está establecida en el @no__t de destino-1.The DataTable property is set to the target DataTable.

  • La propiedad Errors está establecida en la excepción detectada.The Errors property is set to the caught exception.

La propiedad Continue se lee después de que se devuelva la llamada del delegado.The Continue property is read after the delegate call returns. Si la propiedad Continue es true, la secuencia de origen se sigue enumerando y cargando en la tabla de datos.If the Continue property is true, the source sequence continues to be enumerated and loaded into the data table. Si la propiedad Continue es false, se produce la excepción original desde el método CopyToDataTable.If the Continue property is false, the original exception is thrown from the CopyToDataTable method.

Para obtener más información, vea crear un objeto DataTable a partir de una consulta.For more information, see Creating a DataTable From a Query.

Se aplica a