ユーザ定義クラスで重複を除外したい場合に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());