Поделиться через


DataTableExtensions.CopyToDataTable Метод

Определение

Возвращает объект DataTable, содержащий копии объектов DataRow при заданном входном объекте IEnumerable<T>.

Перегрузки

CopyToDataTable<T>(IEnumerable<T>)

Возвращает объект DataTable, содержащий копии объектов DataRow при заданном входном объекте IEnumerable<T> и универсальном параметре T, равном DataRow.

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

Копирует объекты DataRow в указанный объект DataTable с заданным входным объектом IEnumerable<T>, где универсальный параметр T имеет значение DataRow.

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

Копирует объекты DataRow в указанный объект DataTable с заданным входным объектом IEnumerable<T>, где универсальный параметр T имеет значение DataRow.

CopyToDataTable<T>(IEnumerable<T>)

Исходный код:
DataTableExtensions.cs
Исходный код:
DataTableExtensions.cs
Исходный код:
DataTableExtensions.cs

Возвращает объект DataTable, содержащий копии объектов DataRow при заданном входном объекте IEnumerable<T> и универсальном параметре T, равном 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

Параметры типа

T

Тип объектов в исходной последовательности, обычно DataRow.

Параметры

source
IEnumerable<T>

Исходная последовательность IEnumerable<T>.

Возвращаемое значение

Объект DataTable, содержащий входную последовательность как тип объектов DataRow.

Исключения

Исходная последовательность IEnumerable<T> имеет значение null и создание новой таблицы невозможно.

Объект DataRow в исходной последовательности находится в состоянии Deleted.

Исходная последовательность не содержит объектов DataRow.

Объект DataRow в исходной последовательности имеет значение null.

Примеры

В следующем примере запрашивается таблица SalesOrderHeader для заказов после 8 августа 2001 г. и используется CopyToDataTable метод для создания DataTable из этого запроса. Затем объект DataTable привязывается к источнику BindingSource, который является посредником для объекта 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

Комментарии

Параметр T входного параметра source может иметь только тип DataRow или тип, производный от DataRow.

Входная последовательность может быть любым IEnumerable<T> источником, а не только запросом или запросом поверх DataTable. Обратите внимание, что если исходная последовательность является запросом, вызов этого оператора приведет к немедленному выполнению. Перечисление исходной последовательности также может привести к возникновению исключений.

Схема целевой таблицы основана на схеме первой DataRow строки в исходной последовательности. Метаданные таблицы извлекаются из DataRow метаданных, а значения таблицы — из значений столбцов объекта DataRow. Для типизированного DataTableтипа типы не сохраняются. Данные и схема передаются, но результирующая строка выходной таблицы не будет типизированного DataRow типа. Свойства RowState и RowError не сохраняются во время копирования из источника DataRow в возвращенный DataTable.

Если в источнике DataRowнайдена пустая ссылка или тип, допускающий значение NULL, этот метод заменяет значение в назначении DataTableValueзначением .

Созданная таблица, возвращаемая методом , имеет имя таблицы по умолчанию. Если вы хотите присвоить DataTableимя , присоединить его к DataSetили выполнить любую другую DataTable конкретную операцию, это необходимо сделать после создания и возврата таблицы.

Дополнительные сведения см. в разделе Создание dataTable из запроса.

Применяется к

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

Исходный код:
DataTableExtensions.cs
Исходный код:
DataTableExtensions.cs
Исходный код:
DataTableExtensions.cs

Копирует объекты DataRow в указанный объект DataTable с заданным входным объектом IEnumerable<T>, где универсальный параметр T имеет значение 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)

Параметры типа

T

Тип объектов в исходной последовательности, обычно DataRow.

Параметры

source
IEnumerable<T>

Исходная последовательность IEnumerable<T>.

table
DataTable

DataTable — объект назначения.

options
LoadOption

Перечисление LoadOption, указывающее параметры загрузки DataTable.

Исключения

Копируемые объекты DataRow не соответствуют схеме объекта назначения DataTable.

Исходная последовательность IEnumerable<T> имеет значение null либо конечный объект DataTable равен null.

Объект DataRow в исходной последовательности находится в состоянии Deleted.

Исходная последовательность не содержит объектов DataRow.

Объект DataRow в исходной последовательности имеет значение null.

Комментарии

Параметр T входного параметра source может иметь только тип DataRowили тип, производный от DataRow.

Входная последовательность может быть любым IEnumerable<T> источником, а не только запросом DataTableк . Обратите внимание, что если исходная последовательность является запросом, вызов этого оператора приведет к немедленному выполнению. Перечисление исходной последовательности также может привести к возникновению исключений.

Схема целевой таблицы основана на схеме первой DataRow строки в исходной последовательности. Метаданные таблицы извлекаются из DataRow метаданных, а значения таблицы — из значений столбцов объекта DataRow. Для типизированного DataTableтипа типы не сохраняются. Данные и схема передаются, но результирующая строка выходной таблицы не будет типизированного DataRow типа. Свойства RowState и RowError не сохраняются во время копирования из источника DataRow в возвращенный DataTable.

Если в источнике DataRowнайдена пустая ссылка или тип, допускающий значение NULL, этот метод заменяет значение в назначении DataTableValueзначением .

Созданная таблица, возвращаемая методом , имеет имя таблицы по умолчанию. Если вы хотите присвоить DataTableимя , присоединить его к DataSetили выполнить любую другую DataTable конкретную операцию, это необходимо сделать после создания и возврата таблицы.

Дополнительные сведения см. в разделе Создание dataTable из запроса.

Применяется к

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

Исходный код:
DataTableExtensions.cs
Исходный код:
DataTableExtensions.cs
Исходный код:
DataTableExtensions.cs

Копирует объекты DataRow в указанный объект DataTable с заданным входным объектом IEnumerable<T>, где универсальный параметр T имеет значение 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;
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)

Параметры типа

T

Тип объектов в исходной последовательности, обычно DataRow.

Параметры

source
IEnumerable<T>

Исходная последовательность IEnumerable<T>.

table
DataTable

DataTable — объект назначения.

options
LoadOption

Перечисление LoadOption, указывающее параметры загрузки DataTable.

errorHandler
FillErrorEventHandler

Делегат FillErrorEventHandler, представляющий метод, который будет обрабатывать ошибки.

Исключения

Копируемые объекты DataRow не соответствуют схеме объекта назначения DataTable.

Исходная последовательность IEnumerable<T> имеет значение null либо конечный объект DataTable равен null.

Объект DataRow в исходной последовательности находится в состоянии Deleted.

-или-

Исходная последовательность не содержит объектов DataRow.

-или-

Объект DataRow в исходной последовательности имеет значение null.

Комментарии

Параметр T входного параметра source может иметь только тип DataRowили тип, производный от DataRow.

Входная последовательность может быть любым IEnumerable<T> источником, а не только запросом DataTableк . Обратите внимание, что если исходная последовательность является запросом, вызов этого оператора приведет к немедленному выполнению. Перечисление исходной последовательности также может привести к возникновению исключений.

Схема целевой таблицы основана на схеме первой DataRow строки в исходной последовательности. Метаданные таблицы извлекаются из DataRow метаданных, а значения таблицы — из значений столбцов объекта DataRow. Для типизированного DataTableтипа типы не сохраняются. Данные и схема передаются, но результирующая строка выходной таблицы не будет типизированного DataRow типа. Свойства RowState и RowError не сохраняются во время копирования из источника DataRow в возвращенный DataTable.

Если в источнике DataRowнайдена пустая ссылка или тип, допускающий значение NULL, этот метод заменяет значение в назначении DataTableValueзначением .

Созданная таблица, возвращаемая методом , имеет имя таблицы по умолчанию. Если вы хотите присвоить DataTableимя , присоединить его к DataSetили выполнить любую другую DataTable конкретную операцию, это необходимо сделать после создания и возврата таблицы.

Если при копировании строки данных в целевую таблицу возникает исключение, например исключение ограничения, errorHandler вызывается делегат. Передается FillErrorEventArgs делегату errorHandler со следующими значениями:

  • Свойству Values присваивается копия исходных данных.

  • Свойству DataTable присваивается целевой DataTableобъект .

  • Свойству Errors присваивается значение перехваченного исключения.

Свойство Continue считывается после возврата вызова делегата. Continue Если свойство имеет значение true, исходная последовательность продолжает перечисляться и загружаться в таблицу данных. Continue Если свойство имеет значение false, из метода создается исходное CopyToDataTable исключение.

Дополнительные сведения см. в разделе Создание dataTable из запроса.

Применяется к