LINQ query — Data aggregation (Group Adjacent)

前端 未结 7 2039
失恋的感觉
失恋的感觉 2020-12-03 03:09

Let\'s take a class called Cls:

public class Cls
{
    public int SequenceNumber { get; set; }
    public int Value { get; set; }
}
7条回答
  •  星月不相逢
    2020-12-03 03:50

    You can use this linq query

    Demo

    var values = (new[] { 9, 9, 15, 15, 15, 30, 9 }).Select((x, i) => new { x, i });
    
    var query = from v in values
                let firstNonValue = values.Where(v2 => v2.i >= v.i && v2.x != v.x).FirstOrDefault()
                let grouping = firstNonValue == null ? int.MaxValue : firstNonValue.i
                group v by grouping into v
                select new
                {
                  From = v.Min(y => y.i) + 1,
                  To = v.Max(y => y.i) + 1,
                  Value = v.Min(y => y.x)
                };
    

提交回复
热议问题