从列表中删除重复项

时间:2017-08-16 14:43:02

标签: c#

我正在尝试从列表中删除重复值,但它无效。我单击按钮执行distinct函数,但最终结果和输入相同

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());

1 个答案:

答案 0 :(得分:1)

  

如果要从某些自定义数据类型的对象序列中返回不同的元素,则必须在类中实现IEquatable泛型接口。以下代码示例演示如何在自定义数据类型中实现此接口,并提供GetHashCode和Equals方法。

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