コレクション LINQ

[C#] LINQラムダ式で重複データを取り除く(.Distinct)

2021年6月20日

LINQラムダ式で重複データを取り除くには .Distinct()を使用します。

サンプル

例1)List<int>から重複要素を取り除く


using System.Collections.Generic;
using System.Linq;

//intのListを生成
List<int> list = new List<int>(){7, 3, 9, 3, 5, 3};

//重複要素を取り除く
var a = list.Distinct().ToArray();

結果

7, 3, 9, 5

例2)List<string>から重複要素を取り除く


using System.Collections.Generic;
using System.Linq;

//stringのListを生成
List<string> list
 = new List<string>(){"鈴木", "田中", "木村", "山田", "大木", "鈴木"};

//「木」が含まれている要素を抽出し、重複を取り除く
var a = list.Where(x => x.Contains("木")).Distinct().ToArray();

結果

鈴木、木村、大木

例3)データクラスの重複を取り除く


using System.Collections.Generic;
using System.Linq;

//データクラス(Prefクラス)
class Pref{
  public int No {get; set;}
  public string Name {get; set;}
  public int Population {get; set;}
}

var list = new List<Pref>();
list.Add(new Pref{No=1, Name="北海道", Population=5381733});
list.Add(new Pref{No=2, Name="青森県", Population=1308265});
list.Add(new Pref{No=3, Name="岩手県", Population=1279594});
list.Add(new Pref{No=2, Name="青森県", Population=1308265});
list.Add(new Pref{No=3, Name="岩手県", Population=1279594});

//Pref.Nameが重複している要素を取り除く
var a = list.Select(x => x.Name).Distinct().ToArray();

結果

北海道、青森、岩手

備考

  • LINQを使用するには、「using System.Linq;」の宣言が必要です。

関連記事

-コレクション, LINQ