2017-08-16 19 views
0

重複する値をリストから削除しようとしていますが、機能しません。私は、異なる機能を実行するためのボタンが、最終的な結果とリストから重複する項目を削除します

List<Cliente> clientes = new List<Cliente>(); 

Cliente.cs

namespace cadastroClientes 
{ 
    public class Cliente 
    { 
     public int ID { get; set; } 
     public string Nome { get; set; } 
     public string Email { get; set; } 
     public bool Enviado { get; set; } 

     public Cliente(int id, string nome, string email, bool enviado = false) 
     { 
      ID = id; 
      Nome = nome; 
      Email = email; 
      Enviado = enviado; 
     } 

     public override string ToString() 
     { 
      return string.Format("{0}", Nome); 
     } 
    } 
} 

削除が重複し、同じ入力をクリックしてください:

List<Cliente> distic = clientes.Distinct().ToList(); 
StringBuilder sb = new StringBuilder(); 
foreach (Cliente cliente in distic) 
{ 
    sb.AppendLine(cliente.Nome); 
} 

MessageBox.Show(sb.ToString()); 
+0

あなたは仕事に)(個別のためにあなたのClienteクラスのequals()メソッドをオーバーライドする必要があります。 – s1lence

+0

おそらく、ClienteクラスにEqualsメソッドを実装する必要があります。それ以外の場合は、参照によってオブジェクトを比較します。 – heringer

+0

ありがとうございます、魅力のように動作します! –

答えて

1

したい場合カスタムデータ型のオブジェクトのシーケンスから別個の要素を返すには、クラスにIEquatable汎用インターフェイスを実装する必要があります。次のコード例は、このインターフェイスをカスタムデータ型に実装し、GetHashCodeおよびEqualsメソッドを提供する方法を示しています。

https://msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspx

関連する問題