Betrachten Sie, ich habe Objekte Foo und Bar; und 3 Tupel genannt A, B und C.Tupel vergleichen, Ignorieren Reihenfolge der Elemente
A = (Foo, Bar)
B = (Bar, Foo)
C = (Foo, Bar)
ich wissen wollen, ob ihre Elemente die gleiche, nicht die Ordnung der Elemente zu berücksichtigen sind. So sind meine gewünschten Ergebnisse;
A.HasSameElementsWith(B) -> True
A.HasSameElementsWith(C) -> True
B.HasSameElementsWith(C) -> True
Ich weiß, dass ich eine verschachtelte Schleife ausführen kann, um sie für jedes ihrer Elemente zu vergleichen. Etwas entlang der Linien von:
foreach (itemA in A)
{
bool flag = false;
foreach (itemB in B)
{
if(itemA == itemB)
{
flag = true;
break;
}
}
if (!flag) return false;
}
return true;
Aber das scheint ineffizient. Gibt es einen bequemeren Weg, dies zu tun?
Hinweis:
ich Generika bin mit, so Foo
und Bar
kann von jeder Art sein. Aber sie werden den gleichen Typ miteinander haben. (d. h. Der Typ von Foo
wird der gleiche sein wie der Typ Bar
)
Sortieren oder Nachschlagen ist der übliche Weg, um Dinge zu beschleunigen – doctorlove
@doctorlove Sorting auch meine Gedanken gekreuzt, aber was meinst du mit Nachschlagen? Ich würde es begrüßen, wenn Sie es ausarbeiten. –
Sie wissen, dass Ihre '==' Referenzen nur dann nicht vergleichen, wenn sie gleich sind –