Solange sie IEnumerable sind, können Sie die Go-to-Linq-Antwort verwenden:
%Vor%Dies wird den Standard-Gleichheitsvergleich verwenden, der für die meisten Objekte eine Referenzgleichheit ist. Um dies zu ändern, können Sie einen generischen IEqualityComparer für den Elementtyp in Ihrer Sammlung definieren, der einen semantischen Vergleich durchführt, und ihn als zweites Argument der Union angeben.
Eine andere Möglichkeit, Ihrer bestehenden Liste hinzuzufügen, wäre:
%Vor%Die direkteste Antwort auf Ihre Frage - da Sie nicht viel Details über die tatsächlichen ICollection-Typen angegeben haben, die Sie als Eingabe oder als Ausgabe benötigen, ist diejenige, die von KeithS gegeben wird.
%Vor%Dies wird ein eindeutiges IEnumerable zurückgeben - wenn Sie das brauchen, dann ist es SEHR schnell. Ich habe eine kleine Test-App (unten) erstellt, die die union-Methode (MethodA) gegen eine einfache hashset-Methode zur Deduplizierung ausführt und einen Hashset (MethodeB) zurückgibt. Die union-Methode DESTROYS das hashset:
MethodeA: 1ms
MethodeB: 2827ms
Allerdings - Das IEnumerable in eine andere Art von Sammlung wie List & lt; & gt; (wie die Version ADas gepostet) ändert alles:
Einfach .ToList () zu MethodeA
hinzufügen %Vor%Ändert die Ergebnisse:
MethodeA: 3656ms
MethodeB: 2803ms
Also - es scheint, dass mehr über den spezifischen Fall, mit dem Sie arbeiten, bekannt sein müsste - und jede Lösung, die Sie sich vorstellen, sollte getestet werden, da eine kleine (Code-) Änderung RIESIGE Auswirkungen haben kann.
Unten ist der Test, den ich verwendet habe, um diese Methoden zu vergleichen - ich bin sicher, es ist eine dumme Art zu testen - aber es scheint zu funktionieren:)
%Vor%Tags und Links c# collections