public static void Main(string[] args)
var x = new string[] { "a", "a", "a", "b", "a", "a", "c" };
var result = x.Select((s, i) => new
groupId = (i > 0 && x[i - 1] == s) ? groupId : ++groupId
).GroupBy(u => new { groupId });
foreach (var item in result)
Console.WriteLine(item.Key);
foreach (var inner in item)
Console.WriteLine(" => " + inner.value);