Poszukuje pomocy w pisaniu kwerendy LINQ dla niektórych obiektów. Czuję, że gdyby moje umiejętności LINQ były bardziej ninja, mógłbym to zrobić z jakimś sprytnym GroupBy/SelectMany (lub czymś ?!).Zapytanie LINQ do podzielenia uporządkowanej listy na podlisty sąsiednich punktów według niektórych kryteriów.
Generalnie rzecz ujmując, pytanie brzmi: nadano listę obiektów w jakiejś kolejności, gdzie każdy obiekt ma flagę, jak podzielić listę na listy podrzędne, gdzie każda podlista jest wszystkim sąsiednimi punktami, flaga jest ustawiona?
imperatywem sposobem osiągnięcia tego celu byłoby jak na poniższym Pseudokod:
foreach object obj
if(obj.FlagSet)
add it to my currentsublist
else
skip to the next obj where FlagSet and start a new sublist
więc, biorąc pod uwagę następujące wejścia:
{1, flaga}, {2, flaga}, {3, NoFlag}, {4, flaga}, {5, NoFlag}, {6} Flag ...
Chciałbym następujący wynik:
List 1: {1, 2} Wykaz 2 : {4} List 3: {6}
I chciałbym to zrobić funkcjonalnie poprzez LINQ. Jakieś pomysły?
(Mam rozejrzał się pierwszy, ale na wszystkie pytania widziałam pojawiła się chce albo po prostu grupy listę lub podzielić na równe wielkości, które nie zostały pomocne dla mnie.)
D'oh! Zazwyczaj około sekundy po opublikowaniu tego odkryłem metodę .TakeWhile(), która wygląda na bardzo użyteczną! Wszelkie odpowiedzi nadal są jednak doceniane. – randomsequence