概要
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:

コメント