Wie kronoz sagte, können Sie in .Net 3.5 Distinct()
.
In .Net 2 konnte man das nachahmen:
public IEnumerable<T> DedupCollection<T> (IEnumerable<T> input)
{
var passedValues = new HashSet<T>();
// Relatively simple dupe check alg used as example
foreach(T item in input)
if(passedValues.Add(item)) // True if item is new
yield return item;
}
Damit kann jede Sammlung abgeleitet werden, und die Werte werden in der ursprünglichen Reihenfolge zurückgegeben.
Normalerweise ist es viel schneller, eine Sammlung zu filtern (da sowohl Distinct()
und in diesem Beispiel ist das der Fall), als wenn man Gegenstände daraus entfernen würde.
5 Stimmen
Ist Ihnen die Reihenfolge der Elemente im Ergebnis wichtig? Dies wird einige Lösungen ausschließen.
3 Stimmen
Eine Ein-Zeilen-Lösung:
ICollection<MyClass> withoutDuplicates = new HashSet<MyClass>(inputList);
0 Stimmen
Wo würde diese Methode angewendet werden?