Linq拆分组(如果缺少号码)

3xG*_*Guy 3 c# linq

这完全让我难过。

假设我们有一个整数列表

var list = new List {
   1,
   2,
   3,
   5,
   6,
   7,
   9,
   10    
};
Run Code Online (Sandbox Code Playgroud)

我如何将其分组为1-3,5-7,9-10,在缺少下一个整数的地方进行分组?

jdw*_*eng 7

看看是否可行。没有for循环,只有linq

            List<int> list = new List<int> { 1, 2, 3, 5, 6, 7, 9, 10};
            List<int> splitIndex = list.Skip(1).Select((x,i) => new { x = x, i = i}).Where(x => list[x.i] + 1 != x.x).Select(x => x.i).ToList();
            //add last index
            splitIndex.Add(list.Count - 1);
            var results = splitIndex.Select((x,i) => (i == 0) ? list.Take(x + 1).ToList() : list.Skip(splitIndex[i - 1] + 1).Take(splitIndex[i] - splitIndex[i - 1]).ToList()).ToList();  
Run Code Online (Sandbox Code Playgroud)