2013-06-12 4 views
2

Здесь новичок и попробовал поиск, но не совсем понял его, поэтому я собираюсь обратиться за помощью к форуму.Преобразование из Linq в String

Я хочу получить результат в текстовое поле из следующего кода, но получил ошибку. Смущенный тем, как его преодолеть, оцените любую помощь. Я считаю, что это была ошибка при преобразовании из linqIgroup в строку, которая будет помещена в textboxt.Text

Он собирается отображать большинство слов, которые были записаны в текстовом файле.

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

Вы можете использовать 'String.Join' в свойстве словаря' Values', если это то, что вы пытаетесь сделать. –

ответ

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

Стивен, ты прибиваешь его, но мне нужно понять логику этого, извините, у меня нет репутации для голосования. Большое спасибо. Ключ включен: строка mostFrequent = resultsList.FirstOrDefault(). Key; –

+0

Будет ли Джон, еще один вопрос, если вы не возражаете, как насчет того, если я хочу показать целые ключи (Слова), которые произошли больше всего, например: Джон (происходил 3 раза), Дэвид (происходил 3 раза), а не только Джон, должен Я передаю его в строковый массив? –

+0

@dianjuwita Я только что обновил свой ответ. – Mez