2013-06-12 26 views
2

這裏是我的新手,並嘗試過搜索,但不是很理解它,所以我想要求論壇尋求幫助。從Linq轉換爲字符串

我想從下面的代碼中得到結果到文本框中,但出現錯誤。 困惑於如何克服它,欣賞任何幫助。我相信這是從linqIgroup轉換爲字符串到textboxt中的錯誤。文本

它即將顯示文本文件中發生的最多的單詞。

string sentence; 
     string[] result = {""}; 
     sentence = txtParagraph.Text; 
     char[] delimiters = new char[] { ' ', '.', '?', '!' }; 

     string[] splitStr = sentence.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); 
     var dic = splitStr.ToLookup(w => w.ToLowerInvariant()); 
     var orderedDic = dic.OrderByDescending(g => g.Count(m=>m.First()).ToString())); 

     txtFreqWord.Text = orderedDic.ToString(); 
+3

「而是得到了一個錯誤」 ---它是一個祕密的錯誤? – zerkms

+0

你可以在字典的'Values'屬性中使用'String.Join',如果這就是你想要做的。 – 2013-06-12 23:37:19

回答

2

請嘗試以下操作以完成您的操作。我正在使用正則表達式。

  var resultsList = System.Text.RegularExpressions.Regex.Split("normal text here normal normal".ToLower(), @"\W+") 
     .Where(s => s.Length > 3) 
     .GroupBy(s => s) 
     .OrderByDescending(g => g.Count()); 

     string mostFrequent = resultsList.FirstOrDefault().Key; 

與他們的計數得到所有的人,請執行以下操作:

 
      foreach (var x in resultsList) { 
       txtFreqWord.Text = txtFreqWord.Text + x.Key + " " + x.Count() +", "; 
      } 
+0

斯蒂芬,你認爲它,但它需要我瞭解它背後的邏輯,抱歉沒有任何聲望投票。非常感謝。關鍵是:string mostFrequent = resultsList.FirstOrDefault()。Key; –

+0

約翰,如果你不介意的話,還有一個問題,如果我想要顯示出現最多的整個鍵(單詞),例如:約翰(發生3x),大衛(發生3x),而不是約翰,應該如何我將它傳遞給字符串數組? –

+0

@dianjuwita我剛剛更新了我的答案。 – Mez