2010-05-03 9 views
6

Je veux supprimer les doublons de cette liste:Comment supprimer les doublons dans une liste en C#

List<Dictionary<string, object>> val = new List<Dictionary<string, object>>(); 

Il ne fonctionne pas si je demande Distinct() de cette manière:

List<Dictionary<string, object>> result = val.Distinct().ToList<Dictionary<string, object>>() 

Mise à jour : Le problème est maintenant résolu. J'ai utilisé la commande union MySQL pour lire la table de la base de données.

+1

Avez-vous déjà posé cette question? Je ne peux plus le trouver, mais je suis sûr que je l'ai vu il n'y a pas si longtemps ... le problème avec cette question existe toujours avec celui-ci: comment définissez-vous "dupliquer"? Exactement la même instance, les mêmes touches, les mêmes clés * et * valeurs? –

Répondre

4

Essayez ceci:

List<Dictionary<string, object>> result = val.Distinct(new myDictionaryComparer()).ToList(); 

myDictionaryComparer est un Comparer Class. Vous pouvez implémenter votre logique de comparaison dans cette classe.

+0

Vous n'avez pas nécessairement besoin d'envelopper votre dictionnaire dans MyClass. Vous pouvez simplement définir une classe implémentant IEqualityComparer > et la passer à Distinct – digEmAll

+0

@digEmAll: Oui! ce que vous dites est plus pertinent dans ce scénario. Merci. Vérifiez ma modification. – Amsakanna

0

Vous pouvez utiliser la méthode suivante:

val.Distinct() 
+0

je l'applique mais il n'a pas travaillé vraiment. –

+0

Les éléments répétés sont-ils la même instance? – alejandrobog

Questions connexes