Wie kann ich "Linq to Objects" verwenden, um eine Reihe zusammenhängender Daten in einer Gruppe zu speichern?

8

Ich habe eine mühsame Anfrage zu schreiben. Ich schreibe gerade einige fiese For-Schleifen, um es zu lösen, aber ich bin gespannt, ob Linq das für mich tun kann.

Ich habe:

%Vor%

und eine Liste, die diese Strukturen enthält. Sagen wir es ist so bestellt:

%Vor%

Wenn Sie die structuredList-Strukturdaten in einen Satz eingeben, sind sie immer zusammenhängend in Bezug auf den Tag. Das heißt, wenn das letzte Datum in der Liste 2011/01/31 war und das früheste Datum in der Liste 2011 war / 01/01, dann würden Sie feststellen, dass die Liste 31 Elemente enthalten würde, eines für jedes Datum im Januar.

Ok, also möchte ich die Listenelemente so gruppieren, dass:

  1. Jedes Element in einer Gruppe muss denselben Dezimal-A-Wert und denselben Dezimal-B-Wert enthalten
  2. Die Datumswerte in einer Gruppe müssen eine Reihe zusammenhängender Daten bilden, wenn die Datumswerte in der Reihenfolge
  3. waren
  4. Wenn Sie die Summe der Elemente in jeder Gruppe zusammenfassen, entspricht die Summe der Anzahl der Elemente in der ursprünglichen Liste (oder Sie könnten sagen, dass eine Struktur mit einem bestimmten Datum nicht mehr als einer Gruppe angehören kann)

Jeder Linq-Meister weiß, wie man das macht?

Danke!

    
Isaac Bolinger 03.12.2011, 01:59
quelle

3 Antworten

8

Sie können benachbarte Elemente in einer Sequenz gruppieren, indem Sie die GroupAdjacent-Erweiterungsmethode (siehe unten) verwenden:

%Vor%

Beispiel:

%Vor%

Erweiterungsmethode:

%Vor%     
dtb 03.12.2011, 02:19
quelle
2

Hier ist ein Eintrag für "Most Convoluted to this":

%Vor%     
Chris Shain 03.12.2011 02:37
quelle
1

Wenn ich Sie gut verstehe, würde eine einfache Gruppe von By den Trick machen:

%Vor%

Nur das. So drucken Sie die Ergebnisse:

%Vor%

Die Ausgabe wäre wie folgt:

%Vor%

Hoffe, das hilft. Prost

    
Edgar Villegas Alvarado 03.12.2011 02:24
quelle

Tags und Links