Ienumerable型変数を比較しダブっていない値を出力する

いつもお世話になっております。

初心者で申し訳ないのですが、タイトルに記載がある通り、
2つのienumerable型の変数を比較し、ダブっていない値を出力する方法
についてお知恵を貸していただきたいです。

「uipath 配列 比較」等でググってみたのですが、フィットする事例を見るけることが出来ませんでしたので、フォーラムにて質問させていただきます。

お手数をおかけしますが、どなかたお知恵を貸していただけませんでしょうか。

それぞれDataTable型に移行して、Fullモードでマッチングし、双方の先頭列がIs Emplyのものを抜き出し、それをまたienumerable型に変換する。。。とか。。。

はなっちさん

リプライありがとうございます。
すみません、、私が初心者のため仰っている事の理解が追い付いていない状態です…
もう少し噛み砕いて説明していただいてもよろしいでしょうか?

こんにちは

2つのienumerable型の変数を比較し、ダブっていない値を出力する方法

IEnumerable<T> と思いますがType(型)は何でしょうか?
また簡単で良いので具体例を記載いただくとより良いと思います。

Yoichiさん

リプライありがとうございます。

1つ目が"System.Collections.IEnumerable"
2つ目が"System.Collections.Generic.IEnumerable(System.Object)"
となっております。

具体例ですが、銀行から入金が無かった部門にまとめてメールを送るという業務になります。
現在、全部門が格納された配列Aと入金があった部門が格納された配列Bはあるのですが、入金が無かった部門の配列が無く、この入金が無かった部門をA-Bにて作り出したいと思っています。

上記の具体例でいかがでしょうか。

こんにちは

ありがとうございます。

a1をSystem.Collections.IEnumerable
a2をSystem.Collections.Generic.IEnumerable(System.Object)

とすると差集合は以下になります。

a1.Cast(Of Object).Except(a2)

実行例は以下参照ください。

なおSystem.Collections.IEnumerableは古い設計の型のため、いろいろ制約があるので、可能であれば使わない方が良いと思います。

Yoichiさん

リプライありがとうございます。

いただいた式の変数をこちらの環境に合わせ書き換え実行したのですが、
実行後、ローカルタブで確認するとresultがnullになっております。

a1とa2は、
a1.Cast(Of Object).Except(a2) 直前まで間違いなく値が入っている事は確認できており、
かつ、a1内にはa2の値が入っており、差分が有る事も確認しております。

お手数ですが、他に確認すべきポイントなどありましたら教えていただけますでしょうか。

こんにちは

objectの比較なのでうまくいかないのかもしれません。文字列型で比較して良いのであれば
以下の式をお試しください。

result = a1.Cast(Of Object).Select(Function(o) o.ToString()).Except(a2.Select(Function(o) o.ToString()))

resultは IEnumerable<string> 型です。

Yoichiさん

リプライありがとうございます。

さきほど頂いた計算式ですが、こちらのポカミスで正常に動いておらず、
ミスを直したところ正常に差分が取得できました。

周りに知見者がいないため困っており、非常に助かりました。
遅い時間にご対応ありがとうございました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.