"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como substituir adequadamente Equals () e GethashCode () para o método LINQ, exceto ()?

Como substituir adequadamente Equals () e GethashCode () para o método LINQ, exceto ()?

Postado em 2025-02-06
Navegar:124

How to Properly Override Equals() and GetHashCode() for LINQ's Except() Method?

implementando Equals () e GethashCode () Métodos para classes personalizadas: um exemplo prático

substituindo os métodos Equals () e GethShCode () Nas classes personalizadas, é crucial para garantir a comparação e o hash de objetos adequados. Este artigo demonstra a maneira correta de implementar esses métodos para sua classe RecomendationDTO para ativar seu uso com o método de LINQ, exceto (). (), você precisa fornecer uma implementação personalizada que compare os objetos com base em suas propriedades exclusivas. No seu caso, a propriedade RecomendationId é um identificador adequado. Aqui está a implementação corrigida:

public substituir bool equals (objeto obj) { var item = obj como recomendaçãoDTO; if (item == null) { retornar falso; } retornar this.recomendationId.equals (item.recommendationId); }

implementando GethashCode ()

public override bool Equals(object obj)
{
    var item = obj as RecommendationDTO;

    if (item == null)
    {
        return false;
    }

    return this.RecommendationId.Equals(item.RecommendationId);
}

public substituir int gethashcode () { Retorne this.recomendationId.gethashCode (); }

uso com linq excep ()

public override int GetHashCode()
{
    return this.RecommendationId.GetHashCode();
}

var lista1 = new List { / * ... * /}; var list2 = nova lista { / * ... * /}; var resultado = list1.xcept (list2);

Nota:

verifique se há valores nulos e use o revestimento correto para propriedades e métodos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3