0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【UiPath】データテーブルの列の比較(一致確認)をする

Last updated at Posted at 2024-05-27

はじめに

別のタイミングで作成・取得したデータテーブル同士を比較して同じかどうかを判定する必要が結構あってハマったのでメモします。

やりたいこと

こいつらは同じなのか…?を判定させたい
image.png

なお、行の比較は以下の式で比較的簡単に実装可能です。

行の比較
'Dt1 データテーブル1
'Dt2 データテーブル2

'戻り値はTrue/False
'行を順番に比較していって同じかどうかを判定する
Dt1.AsEnumerable().SequenceEqual(Dt2.AsEnumerable(),DataRowComparer.Default)

ちなみに、この式だと最初のテーブル2つは行とその値が一緒なのでTrueになります。

列の比較が分からなかったので調べました。

この記事でできること

  • UiPathで2つのデータテーブルの列の一致・不一致を調べることができる

この記事の対象者

  • UiPath Studio開発者

動作環境

  • Windows10
  • UiPath v2023.10
    • Windows
    • VB

「コードを呼び出し」アクティビティ

コードを呼び出しアクティビティをシーケンス内に入れてください。

image.png

引数を編集

以下のように引数を作成してください。
Valueには比較したいデータテーブルを入れてください。

image.png

コードを編集

コードを編集で次のコードをコピペしてください。

列の比較
    ' 入力引数:Dt1 データテーブル1
    ' 入力引数:Dt2 データテーブル2
    ' 出力引数:IsEqualDataTable
    
    ' 列数が異なった時点で、列名がすべて一致することはない。
    If Dt1.Columns.Count <> Dt2.Columns.Count Then
        IsEqualDataTable = False
		Return
    End If

    ' すべての列名を比較する。
    For i As Integer = 0 To Dt1.Columns.Count - 1
        ' 列名が一致しない場合、Falseを返す。
        If Dt1.Columns(i).ColumnName <> Dt2.Columns(i).ColumnName Then
            IsEqualDataTable = False
			Return
        End If
    Next

    'すべての列名が一致していればTrueを返す。
    IsEqualDataTable =  True


まとめ

列だけ比較したい場合はこれだけで十分です。
行と一緒に比較したい場合は最初の式と同時使いがおすすめです。

image.png

データテーブルがnullの時はエラーが出るのでnull時はエスケープする必要あります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?