VB.NETのDataTableをコピーするサンプルです。
目次
サンプル | DataTableクラス |
テーブルの構造と値をコピーする(copy) | |
テーブル構造のみコピーする(clone) |
DataTableクラス
- メモリ内のテーブルのように使用できます。
- 以下は、MicrosoftのDataTableクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.datatable?view=netcore-3.1
テーブルの構造と値をコピーする(copy)
テーブルの構造と値をコピーするサンプルです。
Module Module1
Sub Main()
'テーブル作成
Dim syain As New DataTable("社員テーブル")
syain.Columns.Add("id") '項目を追加
syain.Columns.Add("name")
syain.Columns.Add("romaji")
'1行目を作成
Dim row As DataRow
row = syain.NewRow
row("id") = "1" '値を追加
row("name") = "鈴木"
row("romaji") = "suzuki"
syain.Rows.Add(row) '1行目をテーブルに追加
syain.AcceptChanges()
'コピー
Dim syain2 As DataTable = syain.Copy
syain.Rows(0).Item("name") = "test"
Console.WriteLine(syain.Rows(0).Item("name")) 'test
Console.WriteLine(syain2.Rows(0).Item("name")) '鈴木
End Sub
End Module
4~17行目は、新規でデータテーブルを作成しています。
20行目は、Copyメソッドでテーブルの構造と値をコピーしています。
22行目は、コピー元の値を変更しています。
24行目は、コピー元です。値は変更されています。
25行目は、コピー先です。値は変更されていません。
テーブル構造のみコピーする(clone)
テーブル構造のみコピーするサンプルです。
Module Module1
Sub Main()
'テーブル作成
Dim syain As New DataTable("社員テーブル")
syain.Columns.Add("id") '項目を追加
syain.Columns.Add("name")
syain.Columns.Add("romaji")
'1行目を作成
Dim row As DataRow
row = syain.NewRow
row("id") = "1" '値を追加
row("name") = "鈴木"
row("romaji") = "suzuki"
syain.Rows.Add(row) '1行目をテーブルに追加
syain.AcceptChanges()
'コピー
Dim syain2 As DataTable = syain.Clone
'Console.WriteLine(syain2.Rows(0).Item("name"))
'1行目を作成
Dim row2 As DataRow
row2 = syain2.NewRow
row2("id") = "001" '値を追加
row2("name") = "田中"
row2("romaji") = "tanaka"
syain2.Rows.Add(row2) '1行目をテーブルに追加
syain2.AcceptChanges()
Console.WriteLine(syain2.Rows(0).Item("name")) '田中
End Sub
End Module
4~17行目は、新規でデータテーブルを作成しています。
20行目は、Cloneメソッドでテーブル構造のみコピーしています。
22行目は、コピー先の値を表示しようとしますが値はないためエラーになります。
25行目からは、コピー先のデータテーブルに値をセットしています。
関連の記事
VB.NET DataTableの行を追加/変更/削除する
VB.NET DataTableをSelectで行を取得する
VB.NET DataViewのサンプル