Ieri ho sbagliato a far partire un post salvato in autopubblicazione post datata sul trovare duplicati di valori con Linq; grazie ad un commentatore Roberto Sarati ho visto la pubblicazione del post (ieri non ero al pc).
Quindi provvedo:
a) ringraziare Roberto
b) pubblicare il post che volevo pubblicare, ciò: trovare gli elementi duplicati in una lista senza Linq
perchè senza Linq?
Perchè mi è capitato, purtroppo, una macchina di produzione con solo il framework 2.
La soluzione implementata è stata:
public static IEnumerable<T> MyDistinctNoLinq<T>(this IEnumerable<T> source)
{
List<T> uniques = new List<T>();
foreach (T item in source)
{
if (!uniques.Contains(item))
uniques.Add(item);
}
return uniques;
}
è vero anche che in giro ho trovato anche quest'altra soluzione che viene dichiarata più performante:
public IEnumerable<T> DedupCollection<T> ( IEnumerable<T> input )
{
HashSet<T> passedValues = new HashSet<T>();
//relatively simple dupe check alg used as example
foreach( T item in input)
{
if( passedValues.Contains(item) )
continue;
else
{
passedValues.Add(item)
yield return item;
}
}
}
ecco il post che dovevo pubblicare ieri
Grazie ancora a Roberto per la segnalazione
Rebitting Tags:
.NET|
100
posted @ venerdì 1 luglio 2011 16:00