2010-02-16 4 views

Répondre

1

Si vous voulez comparer deux séquences dans .NET 3.5 et au-delà (c'est la version du cadre C# 3.0 qui est livré avec), vous devez utiliser le SeqenceEqual extension method on the Enumerable class in the System.Linq namespace. Toutefois, pour cela, il utilisera le comparateur d'égalité par défaut pour le paramètre de type T dans les implémentations IEnumerable<T> qu'il compare.

Si vous souhaitez modifier la façon dont l'égalité est vérifiée, vous devez passer une implémentation de IEqualityComparer<T> à la méthode SequenceEqual à utiliser lors de la comparaison des éléments de chaque séquence.

En outre, si vous essayez de voir si deux ensembles sont égaux (comme représenté par IEnumerable<T>) alors votre meilleur pari est de vérifier utiliser le Except extension method on the Enumerable class et assurez-vous que le jeu de résultats n'a pas toutes les entrées et que les deux implémentations IEnumerable<T> ont le même nombre d'entrées (puisqu'Except peut renvoyer une séquence vide même avec des séquences de longueurs différentes), ce que vous pouvez faire avec le Count extension method.

1

Découvrez ce answer, il fournit une méthode qui détermine si deux séquences contiennent les mêmes éléments.

2

Si vous voulez comparer quel que soit l'ordre des éléments, essayez la méthode UnorderedEqual <T> d'ici:

Sinon:

var list1 = new List<int> { 1, 2, 3 }; 
var list2 = new List<int> { 1, 2, 3 }; 
var areSame = Enumerable.SequenceEqual(list1, list2); 
+0

cxfx: L'affiche indique qu'ils utilisent C# 3.0, ce qui implique .NET 3.5 qui a la plupart des outils nécessaires pour comparer les implémentations IEnumerable en tant qu'ensembles, ou en tant que séquences ordonnées, le lien d'égalité de liste n'ajoute pas beaucoup à la solution. – casperOne

+0

Merci pour votre réponse, j'ai besoin d'implémenter IEqualityCompairer interface pour faire ma propre comparaison en fait. La liste est: ListA , ListB ; "myObject" est un objet assez complexe que j'ai besoin de comparer quelques propriétés. C'est pourquoi j'ai besoin d'un comparateur personnalisé. De plus, ces listes sont des valeurs de deux dictionnaires. Donc, mon modèle de données est comme ceci: Dictionnaire > à comparer avec Dictionary >. Les clés sont OK mais j'ai un problème avec les valeurs de ces deux dictionnaire Merci pour votre réponse Morz – Ninja

+0

Oui, l'ordre des éléments n'est pas une question – Ninja