Cercare aiuto durante la scrittura di una query LINQ su alcuni oggetti. Sento che se le mie capacità di LINQ fossero più ninja, potrei farlo con un po 'GroupBy/SelectMany (o qualcosa del genere ?!).query LINQ per dividere un elenco ordinato in sottolisti di punti contigui secondo alcuni criteri
dichiarato genericamente, la domanda è: dato un elenco di oggetti in una sorta di ordine, dove ogni oggetto ha una bandiera, come faccio a dividere la lista in sotto-liste, dove ogni sottoelenco è tutti i punti contigui dove la bandiera è impostata?
Un modo imperativo di fare questo sarebbe come il seguente pseudocodice:
foreach object obj
if(obj.FlagSet)
add it to my currentsublist
else
skip to the next obj where FlagSet and start a new sublist
Quindi, dato il seguente testo:
{1, Bandiera}, {2, Bandiera}, {3, noflag}, {4, Bandiera}, {5, noflag}, {6, Bandiera} ...
mi piacerebbe il seguente output:
Lista 1: {1, 2} Lista 2 : {4} List 3: {6}
E mi piacerebbe farlo funzionalmente tramite LINQ. Qualche idea?
(Ho guardato in giro prima, ma a tutte le domande che ho potuto vedere sembrava voler sia semplicemente un elenco di gruppo o di dividere in dimensioni uguali, che non è stato utile per me.)
D'oh! Tipicamente, circa un secondo dopo aver postato questo ho scoperto il metodo .TakeWhile() che sembra che sarà molto utile! Tuttavia, tutte le risposte sono comunque apprezzate. – randomsequence