2016-12-05 1 views
0

Ich habe Array von Strings:Get Anzahl der jede einzelne Wort von Array von Strings

string[] arrStr = {"I am from USA","I like stackoverflow","stackoverflow always helps"}; 

Ich möchte Graf von jedem Wort bekommen von allen Saiten wie

I : 2     
stackoverflow : 2    
from : 1 

Ich will bekommen dieses Ergebnis mithilfe von LINQ und nur eine Anweisung

+0

Was ist mit Sätzen wie "Ich bin Ravi. Ich mag Computer "? Würden Sie das haben? Würden Sie den Zeitraum ausschließen? Wie wäre es mit anderen Interpunktionszeichen wie Fragezeichen? – DavidG

+0

* Ich will * (zweimal). Ich nehme an, dass Sie nicht Quellcode hier bestellen. Also, Sie haben versucht, Wo steckst du fest? –

Antwort

1

verwenden Sie können wie folgt tun:

string[] words =string.Join(" ",arrStr).Split(' ').ToArray(); 

     var groups = 
      from w in words 
      group w by w into g 
       select new 
       { 
       Count=g.Count(), 
       Word=g.Key 
       }; 

Es wird Ihnen eine Sammlung von Objekten, wie geben:

Count: 2 Wort:

Count Stackoverflow: 1 Wort: von

1

Sie mit einer Gruppe kann und auch tun, dass die Verwendung SelectMany um alle Wörter zuerst zu glätten:

var result= array.SelectMany(s=>s.Split(' ')) 
       .GroupBy(s=>s) 
       .Select(g=>new {Word= g.Key,Count=g.Count()}); 
Verwandte Themen