2010-07-02 11 views
5

Ho un elenco di stringhe in C# e desidero creare un elenco di caratteri univoci presenti nelle stringhe nell'elenco, utilizzando LINQ.utilizzando LINQ in C# per convertire un elenco <string> in un elenco <char>

Ho finora elaborato come trasformare la lista in una lista, ma non riesco a capire come far andare il LINQ oltre.

Quello che ho finora è la seguente:

List<string> dictionary = new List<string>(someArray); 
List<string[]> uniqueCharacters = dictionary.ConvertAll(s => s.Split()); 

Credo che ho bisogno di qualcosa sulla falsariga di

List<char> uniqueCharacters = 
    dictionary.ConvertAll(s => s.Split()).SelectAll(t, i=>t[i][0]); 

risposta

15

È possibile utilizzare il metodo SelectMany di LINQ, ad esempio:

var list = new List<string> { "Foo", "Bar" }; 

var chars = list.SelectMany(s => s.ToCharArray()); 
var distinct = chars.Distinct(); 
+0

Elenco uniqueCharacters = dictionary.SelectMany (s => s.ToCharArray()). Distinct(). ToList(); è quello che sono andato con alla fine - grazie :) – simonalexander2005

+0

Utilizzando un 'HashSet' alla fine' var distinct = new HashSet (chars) 'è un'altra alternativa ragionevole se la domanda viene interpretata in modo più liberale. Vedi anche http://stackoverflow.com/questions/1388361/getting-all-unique-items-in-ac-list –

+0

La chiamata 'ToCharArray' non è necessaria e ha un piccolo impatto sulle prestazioni perché i caratteri devono essere copiati da la stringa di origine in un nuovo array. Puoi semplicemente fare 'list.SelectMany (s => s)' invece. – LukeH

1

ottenere il risultato LinQ e metterlo in loop, confrontare ogni char con in lista di caratteri.

foreach (string character in dictionary) 
     { 
      if (!(uniqueCharacters).Contains(character)) 
      { 
       uniqueCharacters.Add(character); 
      } 
     } 
+0

buona risposta, ma speravo di essere in grado di fare tutto in LINQ - per l'esperienza di apprendimento, se non altro – simonalexander2005

+1

suo solo come un comando Sql DISTINCT scrivi la tua query su LinQ e aggiungi Distinct() alla fine –

Problemi correlati