Самый простой способ - просто зацикливать символы, так как это то, что любой алгоритм должен делать так или иначе:
int total = 0;
foreach (char c in theString) {
if (c == '-') total++;
}
Вы можете использовать методы расширения, чтобы сделать в основном то же самое:
int total = theString.Count(c => c == '-');
Или:
int total = theString.Aggregate(0, (t,c) => c == '-' ? t + 1 : t)
Тогда есть интересные (но менее эффективные) приемы, такие как удаление символов и сравнение длин:
int total = theString.Length - theString.Replace("-", String.Empty).Length;
Или с помощью регулярного выражения найти все вхождения символа:
int total = Regex.Matches(theString, "-").Count;