Вот решение, которое должно подсчитывать все частоты слов в файле:
private void countWordsInFile(string file, Dictionary<string, int> words)
{
var content = File.ReadAllText(file);
var wordPattern = new Regex(@"\w+");
foreach (Match match in wordPattern.Matches(content))
{
int currentCount=0;
words.TryGetValue(match.Value, out currentCount);
currentCount++;
words[match.Value] = currentCount;
}
}
Этот код можно назвать так:
var words = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
countWordsInFile("file1.txt", words);
После того, как эти слова будут содержать всеслова в файле с их частотой (например, words["test"]
возвращает количество раз, когда "test" находится в содержимом файла. Если вам нужно собрать результаты из более чем одного файла, просто вызовите метод для всех файлов с одинаковымсловарь. Если вам нужны отдельные результаты для каждого файла, каждый раз создавайте новый словарь и используйте структуру, подобную предложенной @DarkGray.