web-dev-qa-db-fra.com

Comparaison de deux tableaux de chaînes en C #

Disons que nous avons 5 tableaux de chaînes en tant que tels:

string[] a = {"The","Big", "Ant"};
string[] b = {"Big","Ant","Ran"};
string[] c = {"The","Big","Ant"};
string[] d = {"No","Ants","Here"};
string[] e = {"The", "Big", "Ant", "Ran", "Too", "Far"};

Existe-t-il une méthode pour comparer ces chaînes entre elles sans les parcourir en C # de telle sorte que seuls a et c produisent le booléen true? En d'autres termes, tous les éléments doivent être égaux et le tableau doit être de la même taille? Encore une fois, sans utiliser de boucle si possible.

45
Wes Field

Vous pouvez utiliser Linq:

bool areEqual = a.SequenceEqual(b);
76
Ahmed KRAIEM

Essayez d'utiliser Enumerable.SequenceEqual :

var equal = Enumerable.SequenceEqual(a, b);
15
Darren

Si vous souhaitez les comparer en une seule fois:

string[] a = { "The", "Big", "Ant" };
string[] b = { "Big", "Ant", "Ran" };
string[] c = { "The", "Big", "Ant" };
string[] d = { "No", "Ants", "Here" };
string[] e = { "The", "Big", "Ant", "Ran", "Too", "Far" };

// Add the strings to an IEnumerable (just used List<T> here)
var strings = new List<string[]> { a, b, c, d, e };

// Find all string arrays which match the sequence in a list of string arrays
// that doesn't contain the original string array (by ref)
var eq = strings.Where(toCheck => 
                            strings.Where(x => x != toCheck)
                            .Any(y => y.SequenceEqual(toCheck))
                      );

Renvoie les deux correspondances (vous pouvez probablement étendre cela pour exclure les éléments qui correspondent déjà, je suppose)

3
Charleh

si vous souhaitez obtenir des données de tableau qui diffèrent d'un autre tableau, vous pouvez essayer.

string[] array1 = { "aa", "bb", "cc" };
string[] array2 = { "aa" };

string[] DifferArray = array1.Except(array2).ToArray();

Sortie: {"bb", "cc"}

1
Manish Vadher