2010-11-12 4 views

risposta

20

Il modo più semplice è il comando LINQ Distinct():

var b = a.Distinct().ToArray(); 
+0

string [] b = a.Distinct(); – Rony

+1

@Rony - 'Distinct' fornisce un array ... –

+1

Distinct restituisce un IEnumerable . È necessario il ToArray() per lanciarlo su un array. – arviman

6

Si potrebbe voler considerare l'utilizzo di un Set al posto di un array. I set non possono contenere duplicati, quindi aggiungere il secondo "a" non avrebbe alcun effetto. In questo modo la tua collezione di personaggi non conterrà mai duplicati e non dovrai eseguire alcuna elaborazione post su di essa.

1

Una matrice, con cui si inizia, è IEnumerable<T>. IEnumerable<T> ha un Distinct()method che può essere usato per manipolare la lista nei suoi valori distinti

var distinctList = list.Distinct(); 

Infine, IEnumerable<T> ha un metodo ToArray():

var b = distinctList.ToArray(); 
2
var list = new HashSet<string> { }; 
    list.Add("a"); 
    list.Add("a"); 

    var countItems = list.Count(); //in this case countItems=1 
0

penso utilizzando C# dizionario è il meglio modo e posso ordinare per valore utilizzando LINQ