2016-12-05 64 views
0

我有一個字符串數組:獲取每個不同字數

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

我想從所有的琴絃每個單詞的計數像

I : 2     
stackoverflow : 2    
from : 1 

我想這一結果使用LINQ和只能用一個語句

+0

那麼像「我是拉維。我喜歡電腦「嗎?你會有這個嗎?你會排除這個時期嗎?其他標點符號如問號怎麼樣? – DavidG

+0

*我想*(兩次)。我假設你沒有在這裏訂購源代碼,你卡在哪裏? –

回答

1

你可以這樣做:

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 
       }; 

它會給你喜歡的對象的集合:

數:2 字:計算器

數:1個 詞:從

1

你可以做到這一點與一組通過,並使用SelectMany首先將所有單詞弄平:

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