Diese Erweiterungsmethode vergleicht zwei auflistungen auf Gleichheit. Dabei werden jedoch nicht die Listeninstanzen sondern die Elemente in den Listen verglichen. Auf wunsch wird die Reihenfolge der Elemente ignoriert.
Die LINQ Methode SequenceEqual erziehlt ein ähnliches Ergebnis. Jedoch erlaubt die Methode keine Angabe, ob die Anordnung der Elemente beachtet werden soll.
string[] a1 = { "a", "b", "c", "d", "e" };
string[] a2 = { "a", "b", "c", "d", "e" };
string[] a3 = { "a", "b", "c", "e", "d" };
string[] a4 = { "a", "b", "c", "d" };
string[] a5 = { "a", "a", "a", "b" ,"c"};
string[] a6 = { "a", "a", "b", "b" };
string[] a7 = { "a", "a", "a", "b" };
bool flag = true;//Bitte ändern um den 3. Parameter zu testen
Console.WriteLine(a1.AreItemsEqual(a2, (x, y) => x == y, flag));//immer true
Console.WriteLine(a1.AreItemsEqual(a3, (x, y) => x == y, flag));//true wenn flag = true
Console.WriteLine(a1.AreItemsEqual(a4, (x, y) => x == y, flag));
Console.WriteLine(a1.AreItemsEqual(a5, (x, y) => x == y, flag));
Console.WriteLine(a1.AreItemsEqual(a6, (x, y) => x == y, flag));
Console.WriteLine(a1.AreItemsEqual(a7, (x, y) => x == y, flag));
Console.WriteLine();
Console.WriteLine(a2.AreItemsEqual(a1, (x, y) => x == y, flag));//immer true
Console.WriteLine(a2.AreItemsEqual(a3, (x, y) => x == y, flag));//true wenn flag = true
Console.WriteLine(a2.AreItemsEqual(a4, (x, y) => x == y, flag));
Console.WriteLine(a2.AreItemsEqual(a5, (x, y) => x == y, flag));
Console.WriteLine(a2.AreItemsEqual(a6, (x, y) => x == y, flag));
Console.WriteLine(a2.AreItemsEqual(a7, (x, y) => x == y, flag));
Console.WriteLine();
Console.WriteLine(a3.AreItemsEqual(a1, (x, y) => x == y, flag));//true wenn flag = true
Console.WriteLine(a3.AreItemsEqual(a2, (x, y) => x == y, flag));//true wenn flag = true
Console.WriteLine(a3.AreItemsEqual(a4, (x, y) => x == y, flag));
Console.WriteLine(a3.AreItemsEqual(a5, (x, y) => x == y, flag));
Console.WriteLine(a3.AreItemsEqual(a6, (x, y) => x == y, flag));
Console.WriteLine(a3.AreItemsEqual(a7, (x, y) => x == y, flag));
Console.WriteLine();
Console.WriteLine(a4.AreItemsEqual(a1, (x, y) => x == y, flag));
Console.WriteLine(a4.AreItemsEqual(a2, (x, y) => x == y, flag));
Console.WriteLine(a4.AreItemsEqual(a3, (x, y) => x == y, flag));
Console.WriteLine(a4.AreItemsEqual(a5, (x, y) => x == y, flag));
Console.WriteLine(a4.AreItemsEqual(a6, (x, y) => x == y, flag));
Console.WriteLine(a4.AreItemsEqual(a7, (x, y) => x == y, flag));
Console.WriteLine();
Console.WriteLine(a5.AreItemsEqual(a1, (x, y) => x == y, flag));
Console.WriteLine(a5.AreItemsEqual(a2, (x, y) => x == y, flag));
Console.WriteLine(a5.AreItemsEqual(a3, (x, y) => x == y, flag));
Console.WriteLine(a5.AreItemsEqual(a4, (x, y) => x == y, flag));
Console.WriteLine(a5.AreItemsEqual(a6, (x, y) => x == y, flag));
Console.WriteLine(a5.AreItemsEqual(a7, (x, y) => x == y, flag));
Console.WriteLine();
Console.WriteLine(a6.AreItemsEqual(a1, (x, y) => x == y, flag));
Console.WriteLine(a6.AreItemsEqual(a2, (x, y) => x == y, flag));
Console.WriteLine(a6.AreItemsEqual(a3, (x, y) => x == y, flag));
Console.WriteLine(a6.AreItemsEqual(a4, (x, y) => x == y, flag));
Console.WriteLine(a6.AreItemsEqual(a5, (x, y) => x == y, flag));
Console.WriteLine(a6.AreItemsEqual(a7, (x, y) => x == y, flag));
Console.WriteLine();
Console.WriteLine(a7.AreItemsEqual(a1, (x, y) => x == y, flag));
Console.WriteLine(a7.AreItemsEqual(a2, (x, y) => x == y, flag));
Console.WriteLine(a7.AreItemsEqual(a3, (x, y) => x == y, flag));
Console.WriteLine(a7.AreItemsEqual(a4, (x, y) => x == y, flag));
Console.WriteLine(a7.AreItemsEqual(a5, (x, y) => x == y, flag));
Console.WriteLine(a7.AreItemsEqual(a6, (x, y) => x == y, flag));
Console.ReadKey();