Это невозможно с помощью словаря.Словарь является ассоциативным (то есть: каждый ключ должен указывать только на один и только один) и по своей природе неупорядочен.Вам нужно будет использовать что-то еще для этой структуры данных.Это не было бы ужасно сложно, хотя!
Edit
A List<Tuple<string, int>>
должно сделать трюк:
List<KeyValuePair<string, int>> structure = new List<KeyValuePair<string, int>>();
structure.Add(new KeyValuePair<string, int>(myList[0], 1);
for(int i = 0; i < myList.Count; i++ )
{
if( myList[i] == structure[structure.Count-1].Key )
{
structure[structure.Count-1].Value += 1;
}
else
{
structure.Add(new KeyValuePair<string, int>(myList[i], 1);
}
}
После этого вы должны(не проверено!) есть то, что вы ищете.
Редактировать (еще одна мысль)
Хотя это возможно с помощью linq (используя TakeWhile и count ..)Я все еще думаю, что здесь есть смысл использовать цикл, все просто.Кто-то более блестящий, чем я мог бы попытаться работать с Linq.