DataTableExtensions.CopyToDataTable<T> Method (IEnumerable<T>, DataTable, LoadOption)


Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Namespace:   System.Data
Assembly:  System.Data.DataSetExtensions (in System.Data.DataSetExtensions.dll)

public static void CopyToDataTable<T>(
	this IEnumerable<T> source,
	DataTable table,
	LoadOption options
where T : DataRow


Type: System.Collections.Generic.IEnumerable<T>

The source IEnumerable<T> sequence.

Type: System.Data.DataTable

The destination DataTable.

Type: System.Data.LoadOption

A LoadOption enumeration that specifies the DataTable load options.

Type Parameters


The type of objects in the source sequence, typically DataRow.

Exception Condition

The copied DataRow objects do not fit the schema of the destination DataTable.


The source IEnumerable<T> sequence is null or the destination DataTable is null.


A DataRow in the source sequence has a state of Deleted.

The source sequence does not contain any DataRow objects.

A DataRow in the source sequence is null.

The parameter T of the input parameter source can only be of type DataRow, or a type derived from DataRow.

The input sequence can be any IEnumerable<T> source, not only a query over a DataTable. Note that if the source sequence is a query, calling this operator will force immediate execution. Enumerating the source sequence can also cause exceptions to be thrown.

The schema of the destination table is based on the schema of the first DataRow row in the source sequence. The table metadata is extracted from the DataRow metadata and the table values from the column values of the DataRow. For a typed DataTable, types are not preserved. The data and schema are transferred, but the resulting rows of the output table will not be of the typed DataRow type. The RowState and RowError properties are not preserved during the copy from the source DataRow to the returned DataTable.

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.

The generated table returned by the method has the default table name. 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.

For more information, see Creating a DataTable From a Query (LINQ to DataSet).

.NET Framework
Available since 3.5
Return to top
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
© 2015 Microsoft