Вывод, что вы хотите:
файл:
foo
foo
foo
bar
текстовое поле:
foo
foo
bar
bar
, чтобы получить '3' (2 foos и один бар)
Dictionary<string,int> fileCounts = new Dictionary<string, int>();
using (var sr = new StreamReader("c:\\test.txt",Encoding.Default))
{
foreach (var word in sr.ReadLine().ToLower().Split(' '))
{
int c = 0;
if (fileCounts.TryGetValue(word, out c))
{
fileCounts[word] = c + 1;
}
else
{
fileCounts.Add(word, 1);
}
}
}
int total = 0;
foreach (var word in richTextBox1.Text.ToLower().Split(' '))
{
int c = 0;
if (fileCounts.TryGetValue(word, out c))
{
total++;
if (c - 1 > 0)
fileCounts[word] = c - 1;
else
fileCounts.Remove(word);
}
}
MessageBox.Show(total.ToString());
Обратите внимание, что это деструктивно модифицирует словарь чтения, вы можете избежать этого (так что придется читать словарь только один раз), покупая просто таким же образом, считая поле расширенного текста, а затем беря минимум отдельных подсчетов и суммируя их .