Как сказал кроноз в .Net 3.5, вы можете использовать Distinct()
.
В .Net 2 вы можете имитировать это:
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;
}
Это может быть использовано для дедупликации любой коллекции и возврата значений в исходном порядке.
Обычно фильтровать коллекцию гораздо быстрее (как и Distinct()
, и этот пример), чем удалять из нее элементы.