C# 按前置/后继关系对对象列表进行分组?

C# 按前置/后继关系对对象列表进行分组?,c#,linq,list,group-by,C#,Linq,List,Group By,我在列表中有A类对象 class A { public int Start; public int End; } 我想在此列表上创建一个GroupBy,这样每个组只包含在同一列表中具有直接前置或后继的对象(即:obj.End+1=otherObj.Start)。我怎样才能用LINQ最优雅地完成这个任务呢?我会按开始和结束对列表进行排序,并使用循环。这应该起作用: List<List<A>> successors = new List<List<A&g

我在列表中有A类对象

class A
{
  public int Start;
  public int End;
}

我想在此列表上创建一个GroupBy,这样每个组只包含在同一列表中具有直接前置或后继的对象(即:obj.End+1=otherObj.Start)。我怎样才能用LINQ最优雅地完成这个任务呢?

我会按
开始
结束
对列表进行排序,并使用循环。这应该起作用:

List<List<A>> successors = new List<List<A>>();
List<A> ordered = As.OrderBy(x => x.Start).ThenBy(x => x.End).ToList();
List<A> last = new List<A>(){ ordered.First() };
successors.Add(last);
for(int i = 1; i < ordered.Count; i++)
{ 
   A currentA = ordered[i];
   A lastA = last.Last();
   if (currentA.Start == lastA.End)
       last.Add(currentA);
   else
   {
       last = new List<A>() { currentA };
       successors.Add(last);
   }
}
列表继承者=新列表();
List ordered=As.OrderBy(x=>x.Start).ThenBy(x=>x.End.ToList();
List last=新列表(){ordered.First()};
继承人。添加(最后一个);
for(int i=1;i
对于索引,LINQ很少是最好的工具