動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
C#

罠:参照型のリストでDistinctは動かない

出典: C# でリストの重複を一意にする3つの書き方(Distinct / GroupBy / HashSet)パターン1: Distinct ──単純な重複を1行で潰す / 罠:参照型のリストでDistinctは動かない

罠:参照型のリストでDistinctは動かない (csharp)#47f2125f4dac
//対処B:クラス側でIEquatable<Customer>を実装
public class Customer : IEquatable<Customer>
{
    public int Id { get; set; }
    public string Name { get; set; }
 
    public bool Equals(Customer other)=>
        other != null && Id == other.Id && Name == other.Name;
    public override bool Equals(object obj)=> Equals(obj as Customer);
    public override int GetHashCode()=> (Id, Name).GetHashCode();
}
 
var unique = customers.Distinct().ToList();  //これで動く
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #47f2125f4dac
  • lines: 13
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「パターン1: Distinct ──単純な重複を1行で潰す / 罠:参照型のリストでDistinctは動かない」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

10
図鑑トップ