pepe-je hat folgendes geschrieben : |
| Weiß jemand, wie man die Aufgabe allgemein lösen kann? |
Darf's Vorgefertigtes sein

?
Enumerable.Distinct
Christoph1972 hat folgendes geschrieben : |
| wo ist das konkrete Problem? |
Das Problem ist, dass du gerade einen O(n²)-Algorithmus beschrieben hast, wo (wie Enumerable.Distinct zeigt) O(n) möglich wäre

. Wahrscheinlich reden wir hier über Datenmengen, bei denen der Unterschied nichtig ist, aber da er ja nach einem allgemeinen Verfahren fragt, wollte ich das nicht unerwähnt lassen.
Eine naive Distinct-Implementierung[*], falls die Reihenfolge beibehalten werden soll:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public static IEnumerable<TSource> Distinct<TSource> (this IEnumerable<TSource> source) { var items = new HashSet<TSource> (); foreach (var element in source) { if (! items.Contains (element)) { items.Add (element); yield return element; } } } |
Und falls nicht:
new HashSet<TSource>(source).ToArray()
[*]Die gewöhnungsbedürftige Formatierung geht aufs Konto der Mono-Leute

.