DataTableExtensions.CopyToDataTable<T> Method (IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)
Assembly: System.Data.DataSetExtensions (in System.Data.DataSetExtensions.dll)
public static void CopyToDataTable<T>( this IEnumerable<T> source, DataTable table, LoadOption options, FillErrorEventHandler errorHandler ) where T : DataRow
The type of objects in the source sequence, typically DataRow.
- Type: System.Data.LoadOption
Usage NoteIn Visual Basic and C#, you can call this method as an instance method on any object of type IEnumerable<>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).
The source sequence does not contain any DataRow objects.
A DataRow in the source sequence is null.
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.
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.
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. A FillErrorEventArgs is passed to the errorHandler delegate with the following values:
The Values property is set to a copy of the source data.
The Errors property is set to the caught exception.
The Continue property is read after the delegate call returns. If the Continue property is true, the source sequence continues to be enumerated and loaded into the data table. If the Continue property is false, the original exception is thrown from the CopyToDataTable method.
For more information, see Creating a DataTable From a Query (LINQ to DataSet).