[.NET クラスライブラリ Tips][LINQ] 2つのシーケンスを取り込み、指定されたプロパティによって一意の要素を取得する(UnionByメソッド)

スポンサーリンク

概要

UnionByメソッドは、2つのシーケンスを取り込み、指定されたプロパティによって一意の要素を返すLINQのメソッドです。通常のUnionメソッドとは異なり、UnionByメソッドはプロパティによって一致する要素をマージします。このメソッドを使用することで、重複した要素を省略したシーケンスを作成することができます。

この記事ではUnionByメソッドの使用方法を説明します。

公式サイト情報はコチラを参照してください。

構文

public static IEnumerable UnionBy<TSource, TKey>(
    this IEnumerable first, 
    IEnumerable second, 
    Func<TSource, TKey> keySelector);

UnionByメソッドは、2つのIEnumerable型の引数と、Func型のkeySelector引数を取ります。keySelector引数は、シーケンスから一意のキーを抽出するために使用されます。

使用例

以下の例では、2つのPersonオブジェクトのコレクションを作成し、UnionByメソッドを使用して、両方のコレクションの要素を結合し、重複する要素を削除しています。この例では、PersonクラスのIdプロパティを使用して、重複する要素を特定します。

class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

IEnumerable firstList = new List()
{
    new Person { Id = 1, Name = "John" },
    new Person { Id = 2, Name = "Jane" },
    new Person { Id = 3, Name = "Mary" }
};

IEnumerable secondList = new List()
{
    new Person { Id = 1, Name = "John" },
    new Person { Id = 4, Name = "Bill" },
    new Person { Id = 5, Name = "Lucy" }
};

IEnumerable uniqueList = firstList.UnionBy(secondList, p => p.Id);

foreach (var person in uniqueList)
{
    Console.WriteLine(person.Name);
}

このコードを実行すると、以下の出力が得られます。

John
Jane
Mary
Bill
Lucy

.NET クラス Tips 一覧

これまでに紹介した .NET Tips 一覧はこちら

Please follow and like us:

コメント

タイトルとURLをコピーしました