2022/02/02(Wed) 09:45:24 編集(投稿者)
2022/02/02(Wed) 08:06:14 編集(投稿者)
■No99038 (Tarou さん) に返信
> >radian さん
> ありがとうございます とりあえずc#に馴染みがないのでVB.NETにコード変換してコードを詳しく見てみますね
ああ、VB.NETでしたか。
Module Module1
Sub Main()
Dim tableA = New DataTable()
tableA.Columns.Add("FilePath")
tableA.Columns.Add("UpdDate", GetType(Date))
tableA.Rows.Add({"aaa", New Date(2022, 1, 1)})
tableA.Rows.Add({"bbb", New Date(2022, 1, 2)})
tableA.Rows.Add({"ccc", New Date(2022, 1, 3)})
tableA.Rows.Add({"ddd", New Date(2022, 1, 4)})
Dim tableB = tableA.Clone()
tableB.Rows.Add({"aaa", New Date(2022, 1, 1)})
tableB.Rows.Add({"ccc", New Date(2022, 1, 2)})
Dim dicFilePathB = tableB.AsEnumerable().
ToDictionary(Of String, DataRow)(
Function(x) x("FilePath"),
Function(x) x
)
Dim tableC = (From row In tableA.AsEnumerable()
Where Not dicFilePathB.ContainsKey(row("FilePath"))
).CopyToDataTable()
For Each row In tableC.AsEnumerable()
Console.WriteLine(row("FilePath"))
Next
Console.ReadKey()
End Sub
End Module
こんなもんでどうでしょう。
Whereの条件変えれば、tableD も出来ると思います。
> 画面の実装は コピー元のファイルリスト・コピー先のファイルリスト・ 更新されたファイルリスト・新規作成されたファイルリストを4つのDataGridViewに表示させます
TableAとTableBの結果を同一DataTableの別の列にマージして、
そのDataTableに対して複数のDataView作ってフィルタ掛けたりとかでも行けるかも?
http://okwakatta.net/code2/dvw02.html