从列表中删除重复的项目
问题描述:
我试图从列表中删除重复的值,但它不工作。我点击按钮来执行不同的功能,但最终的结果和相同的输入从列表中删除重复的项目
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());
答
如果你想要从某些自定义数据类型的对象序列中返回不同的元素,您必须在该类中实现IEquatable通用接口。下面的代码示例演示如何在自定义数据类型中实现此接口并提供GetHashCode和Equals方法。
https://msdn.microsoft.com/en-us/library/bb348436(v=vs.110).aspx
你必须重载equals()方法在你Cliente类鲜明的()工作。 – s1lence
也许你应该在Cliente类中实现Equals方法。否则,它将通过引用来比较对象。 – heringer
谢谢,作品像一个魅力! –