LINQ consulta para dividir una lista ordenada en sublistas de puntos contiguos según algunos criterios

Buscando ayuda para escribir una consulta LINQ en algunos objetos. Siento que si mis habilidades con LINQ fueran más ninjas, podría hacer esto con algunos inteligentes GroupBy / SelectMany (¡o algo así!).

Establecida genéricamente, la pregunta es: dada una lista de objetos en algún tipo de orden, donde cada objeto tiene una Bandera, ¿cómo divido la lista en sublistas, donde cada sublista es todos los puntos contiguos donde está la bandera? ¿conjunto

Una forma imperativa de hacer esto sería como el siguiente 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

Entonces, dada la siguiente entrada:

{1, Flag}, {2, Flag}, {3, NoFlag}, {4, Flag}, {5, NoFlag}, {6, Flag} ...

Me gustaría el siguiente resultado:

Lista 1: {1, 2} Lista 2: {4} Lista 3: {6}

Y me gustaría hacerlo funcionalmente a través de LINQ. ¿Algunas ideas

(Primero miré alrededor, pero todas las preguntas que pude ver parecían querer simplemente agrupar una lista o dividirlas en tamaños iguales, lo que no me ha sido útil).

Respuestas a la pregunta(4)

Su respuesta a la pregunta