Как изменить TValue в Dictionary в цикле foreach? - C#
Формулировка задачи:
есть словарь с буквами. есть строка текста. нужно подсчитать количество букв из словаря в строке текста.
сделал словарь:
для подсчета сделал два цикла.
ошибка System.InvalidOperationException Коллекция была изменена; невозможно выполнить операцию перечисления.
Dictionary<char, double> array = new Dictionary<char, double>() {'a',0};foreach (var voc in array)
{
double count = 0;
foreach (var st in str)
{
if (voc.Key==st)
{
count++;
}
}
//после подсчета количества букв в строке меняю значение возле буквы на количество ее повторений.
array[voc.Key]=count;
}Решение задачи: «Как изменить TValue в Dictionary в цикле foreach?»
textual
Листинг программы
var dict = str.GroupBy(x => x).Where(x=> (x.Key >= 'a' && x.Key <= 'z') || (x.Key >= 'A' && x.Key <= 'Z'))
.OrderBy(x=>x.Count())
.ToDictionary(x => x.Key, x=> x.Count());
foreach (var i in dict)
Console.WriteLine("{0} = {1}",i.Key,i.Value);