C’est officiel, les vacances sont finies et donc retour difficile à la réalité mais c’est quand même avec grand plaisir que je reprends du service avec cette série d’astuces sur Linq :) Pour recommencer, on va y aller en douceur en abordant l’opérateur SequenceEqual.

Alors. Comment faîtes-vous pour déterminer si deux listes ont les mêmes éléments ? (je parle bien des mêmes instances)

Quelque chose comme ceci ?

var membres1 = GetMembresDeveloppez();
var membres2 = GetMembresDeveloppez();

if (membres1.Count == membres2.Count)
{
       
foreach (var currentMembre in membres1)
        {
               
if (membres2.Contains(currentMembre) == false)
                       
return false;
        }

        return true;
}
else
{
       
return false;
}

Avec Linq, l’opérateur SequenceEqual s’occupera de faire toute la comparaison pour vous :

var membres1 = GetMembresDeveloppez();
var membres2 = GetMembresDeveloppez();

bool result1 = membres1.SequenceEqual(membres2); // Faux
bool result2 = membres1.SequenceEqual(membres1); // Vrai
bool result3 = membres1.SequenceEqual(membres1.ToList()); // Vrai

Facile ? :)

Téléchargez les sources (sous Visual Studio 2008).