閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

シーケンスから重複した要素を取り除くには(Unique)

配列やらリストから重複を除いて一意な値を取り出したいということはよくありますが、LINQではEnumerable.Distinctメソッドを利用すると一発で実現できるようです。MSDNのサンプルそのままですが:

int[] arr = {21, 46, 46, 55, 17, 21, 55, 55};
var uniq = arr.Distinct(); // 重複を取り除く
foreach (var i in uniq)
{
    Console.WriteLine(i);
}
/* 出力結果:
21
46
55
17 */

見ての通りシーケンスをあらかじめソートしておく必要はありません。便利ですね。



Enumerable.Distinct(TSource) メソッド (IEnumerable(TSource)) (System.Linq)