У меня есть таблица исходных данных типа System.Data.DataTable, из которой я должен создать таблицу данных назначения сопоставленного столбца (учитывайте тот же SqlDBType для сопоставленных столбцов).
У меня есть список класса MappingInfo, в котором каждый столбец с исходными данными сопоставляется с новым именем столбца, которое будет находиться в таблице данных назначения.
Public Class MappingInfo
Public Property SourceFieldName As String
Public Property DestinationFieldName As String
End Class
Я должен оценить условие в исходной таблице данных, чтобы разрешить копирование данных строки в целевую таблицу.
Я сделал это, используя следующий фрагмент кода:
''Prepare destination table.
For Each oMapping In oMappingInfo
DestinationDataTable.Columns.Add( _
New DataColumn(oMapping.DestinationFieldName))
Next
For Each oRow In SourceDataTable.Rows ''Copy data.
If oRow("IsActive") Then
oDataRow = DestinationDataTable.NewRow
For Each oMapping In oMappingInfo
oDataRow(oMapping.DestinationFieldName) = _
oRow(oMapping.SourceFieldName)
Next
DestinationDataTable.Rows.Add(oDataRow)
End If
Next
Основным недостатком является то, что здесь у меня есть минимум 40 тыс. записей в исходной таблице данных, и данные невозможно получить из базы данных, поскольку все изменения с данными фиксируются только тогда, когда пользователь сохраняет свою работу. Сгенерированная целевая таблица назначается в качестве источника данных для управления сеткой и отчета для предварительного просмотра.
Как я могу добиться этого эффективно, используя Linq, или кто-нибудь, пожалуйста, предложите мне лучший способ выполнить это требование.