Consider the following collection.
I
last = null; foreach (var option in list) { if (last != option) newlist.Add(new Group(option, new[])); newlist.Last().Add(option); last = option; }