C#/VB  コレクションを結合する(ラムダ式)

コレクションを結合することはできますか?

同じ内容のコレクションであれば、UNIONやCONCATを利用することで、結合したコレクションを取得することができまs。

目次

UNION、CONCATでコレクションを結合する

 LINQラムダ式のUNION、CONCATを利用することで、同じ内容のコレクションであれば結合することができます。

 UNIONを使用した場合は、結合される側のコレクションに同じ内容の行が存在する場合、1つの行として統合されます。

コレクション1.Union(コレクション2)

 Concat使用した場合は、UNION ALLのように結合される側のコレクションに同じ内容の行が存在する場合は、別の行として結合されます。

コレクション1.UnionALL(コレクション2)

List<(int, String)> lstItem1 = new List<(int, String)>();
lstItem1.Add((1, "sakura"));
lstItem1.Add((2, "suisei"));
lstItem1.Add((3, "usada"));
lstItem1.Add((3, "usada"));
lstItem1.Add((2, "suisei"));

List<(int, String)> lstItem2 = new List<(int, String)>();
lstItem2.Add((1, "sakura"));
lstItem2.Add((4, "koyori"));

Debug.WriteLine("UNION");
var ret1 = lstItem1.Union(lstItem2).ToList();
ret1.ForEach(x => Debug.WriteLine(x));

Debug.WriteLine("CONCAT(UNION ALL)");
var ret2 = lstItem1.Concat(lstItem2).ToList();
ret2.ForEach(x => Debug.WriteLine(x));
Dim lstItem1 As New List(Of (Integer, String))

lstItem1.Add((1, "sakura"))
lstItem1.Add((2, "suisei"))
lstItem1.Add((3, "usada"))
lstItem1.Add((3, "usada"))
lstItem1.Add((2, "suisei"))

Dim lstItem2 As New List(Of (Integer, String))

lstItem2.Add((1, "sakura"))
lstItem2.Add((4, "koyori"))

Debug.WriteLine("UNION")
Dim ret1 = lstItem1.Union(lstItem2).ToList()
ret1.ForEach(Sub(x) Debug.WriteLine(x))

Debug.WriteLine("CONCAT(UNION ALL)")
Dim ret2 = lstItem1.Concat(lstItem2).ToList()
ret2.ForEach(Sub(x) Debug.WriteLine(x))
UNION
(1, sakura)
(2, suisei)
(3, usada)
(4, koyori)
CONCAT(UNION ALL)
(1, sakura)
(2, suisei)
(3, usada)
(3, usada)
(2, suisei)
(1, sakura)
(4, koyori)

リスキリングでキャリアアップしてみませんか?

リスキリング(学び直し)は、経済産業省が推奨しており、

今だけ、最大70%のキャッシュバックを受けることができます。

リスキリング 給付金が出るスクール紹介

最大70%の給付金が出るおすすめのプログラミングスクール!

国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

興味のある方はすぐに確認しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次