I only have a non-linq solution for this (if I understood the problem correctly). Hope this helps.
void Main() { var list = new List<int>{1,2,3,5,6,8,9,10}; GetData(list).Dump(); } public IEnumerable<List<int>> GetData(IEnumerable<int> data) { int prev = 0; var g = new List<int>(); foreach (var item in data) { if(item - prev > 1 && g.Count > 0) { yield return g; g = new List<int>(); } g.Add(item); prev = item; } yield return g; }
source share