C#

【C#】LINQのDistinctを自作クラスのコレクションに使う

ユーザ定義クラスで重複を除外したい場合にDistinctメソッドを使っても上手く動きませんでした。これは参照している先がそれぞれ異なるため、別の要素として認識されているためです。

検証は下記のクラスをもとに行います。

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

Selectで射影してからDistinct

Selectメソッドで必要な項目を匿名型で射影して、Distinctメソッドで重複を除きます。

var distinct = people.Select(s => new { s.Name, s.Age })
                     .Distinct();

GroupBy後にSelectで射影

GroupByメソッドでグルーピングして、Selectメソッドで射影することで重複が除かれたコレクションが出力されます。

var gropuby = people.GroupBy(s => new { s.Name, s.Age })
                    .Select(s => s.First());
エンジニアの転職ならこれ!

【第二新卒向け】マイナビジョブ20's

マイナビジョブ20'sは、20代・第二新卒・既卒向けの転職エージェントです。

▼こんな方におすすめ
・はじめて転職しようと思っている
・転職できるだけのスキルが自分にあるか不安
・手厚いサポートを受けたい

【経験者向け】レバテックキャリア

ITエンジニア専門の転職エージェントです。

元エンジニアなど高い専門性を持つアドバイザーが理想の求人を提案してくれます。

▼こんな方におすすめ
・20代後半~40代前半
・年収を上げたい
・スキルアップしたい
・手厚いサポートを受けたい

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です