var s = from i in Enumerable.Range(0, test.Length)
from j in Enumerable.Range(0, test.Length)
where test[i] == ' ' && (i == 0 || test[i - 1] != ' ') &&
(test[j] == ' ' && j == (i + 1))
select i;
Это даст вам все стартовые индексы, где встречаются несколько пробелов. Это красиво, но я уверен, что это работает.
edit: Нет необходимости в соединении. Это лучше.
var s = from i in Enumerable.Range(0, test.Length-1)
where test[i] == ' ' && (i == 0 || test[i - 1] != ' ') && (test[i+1] == ' ')
select i;