LINQ consulta para dividir uma lista ordenada em sublistas de pontos contíguos por alguns critérios
Procurando ajuda para escrever uma consulta LINQ em alguns objetos. Eu sinto que se minhas habilidades em LINQ fossem mais ninjas, eu poderia fazer isso com alguns GroupBy / SelectMany inteligentes (ou algo assim?!).
Estada genericamente, a pergunta é: dada uma lista de objetos em algum tipo de ordem, onde cada objeto tem uma bandeira, como dividir a lista em sub-listas, onde cada sub-lista é todos os pontos contíguos em que a bandeira é conjunto
Uma maneira imperativa de fazer isso seria como o seguinte pseudocódigo:
foreach object obj
if(obj.FlagSet)
add it to my currentsublist
else
skip to the next obj where FlagSet and start a new sublist
Então, dada a seguinte entrada:
{1, Flag}, {2, Flag}, {3, NoFlag}, {4, Flag}, {5, NoFlag}, {6, Flag} ...
Gostaria da seguinte saída:
Lista 1: {1, 2} Lista 2: {4} Lista 3: {6}
E eu gostaria de fazê-lo funcionalmente via LINQ. Alguma ideia
(Eu olhei em volta primeiro, mas todas as perguntas que pude ver pareciam simplesmente agrupar uma lista ou dividir em tamanhos iguais, o que não me ajudou.)