Прочитать на английском

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


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.

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

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

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.

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;

Комментарии

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

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.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)

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

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

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

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 из запроса.

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

.NET 9 и другие версии
Продукт Версии
.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)

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

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

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

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 из запроса.

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

.NET 9 и другие версии
Продукт Версии
.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