[Solved] Split Array By Values In Sequence [duplicate]


This can work with the linq extension Aggregate. My seeding is not very elegant but that is easy enough to change. The results variable will contain the array of arrays and they are actually of type List<T> because that way they can be easily grown in the function where an array [] is always of fixed size.

This also assumes the source is already ordered and unique, if that is not the case add .OrderBy(x => x).Distinct()

var source = new[] { 1, 2, 3, 7, 8, 9, 12, 13, 24 };
var results = new List<List<int>>{new List<int>()};

var temp = source.Aggregate(results[0], (b, c) =>
{
    if (b.Count > 0 && b.Last() != c - 1)
    {
        b = new List<int>();
        results.Add(b);
    }
    b.Add(c);
    return b;
});

solved Split Array By Values In Sequence [duplicate]