Ich habe zwei Sammlungen a
und b
. Ich möchte die Menge der Elemente entweder in a
oder b
berechnen, aber nicht in beiden (eine logische exklusive oder). Mit LINQ, kann ich mit diesen kommen:LINQ und setzen Unterschied
IEnumerable<T> Delta<T>(IEnumerable<T> a, IEnumerable<T> b)
{
return a.Except (b).Union (b.Except (a));
}
Ich frage mich, ob es noch andere effiziente oder kompaktere Möglichkeiten, den Unterschied zwischen den beiden Sammlungen zu erzeugen.
Bearbeiten 1: Jon Skeet postulierte eine erste Lösung, die nicht die Reihenfolge der Elemente durch eine HashSet
verlässt. Ich frage mich, ob es andere Ansätze gibt, die die Reihenfolge a
und b
in der Ausgabe beibehalten würden.
Was passiert, wenn a oder b Duplikate enthalten? –
In meinem Fall enthalten 'a' und' b' keine Duplikate, dies ist für mich kein Problem. –