我有一个 System.Data.DataTable 类型的源数据表,我必须从中生成映射列的目标数据表(考虑映射列的相同 SqlDBType。)
我有一个 MappingInfo 类的列表,其中每个 Source Datatable Column 都映射为 New Column Name,它将位于目标数据表中。
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
主要缺点是我在源数据表中至少有 40k 条记录,并且无法从数据库中获取数据,因为只有在用户保存他的工作时才提交数据的所有更改。生成的目标表作为数据源分配给网格控件和报告以供预览。
我如何使用 Linq 有效地实现这一点,或者有人请建议我实现这一要求的最佳方法。