タイプ 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
主な欠点は、ソース データ テーブルに最低 40k レコードがあり、ユーザーが作業を保存したときにのみコミットされたデータのすべての変更として、データベースからデータを取得できないことです。生成された宛先テーブルは、データ ソースとしてグリッド コントロールとプレビュー用のレポートに割り当てられています。
Linqを使用してこれを効率的に達成するにはどうすればよいですか、または誰かがこの要件を達成するための最良の方法を提案してください。