2009-10-25 15 views
5

Ho un file .csv (words.csv) contenente 5000 parole separate da virgole. La maggior parte delle stringhe sono valori ripetuti.Raggruppa e conta oggetti

Posso usare LINQ per fare quanto segue:

A. gruppo parole comuni insieme e conteggio spettacolo di ripetute parole

quindi se Apple è stato ripetuto 5 volte e banana 3 times..it dovrebbe visualizzare come

mela - 5
banana - 3 e così via

B. Creare un altro file di testo con i duplicati rimossi.

risposta

6

Certo, ecco la sintassi LINQ in C#:

from word in words 
group word into occurrences 
select new 
{ 
    Word = occurrences.Key, 
    Count = occurrences.Count() 
} 

O in "puro" C# metodo chiama:

words.GroupBy(w => w) 
    .Select(o => new 
        { 
        Word = o.Key, 
        Count = o.Count() 
        }); 

e di creare una lista distinta di parole basta utilizzare l'operatore Distinct:

words.Distinct();