dedlfix: LINQ

Beitrag lesen

Tach!

  1. Ich habe bei der gruppierung von Date.Date nun ein Problem, dass ich jetzt die Daten zwar problemlos gruppiern kann, die zeiten, die ich bereits dadurch abgeschniten habe (01.01.2014 16:10:25 wurde zu 01.01.2014 00:00:00), stehen mir bei der Mitnahme der Daten (bei dir new Record) nicht mehr zur Verfügung. Diese müssen aber hinterher bei mir angezeigt werden.

Das geht aber nicht. Die Gruppe fasst mehrere Datensätze zu einer Ergebniszeile zusammen. Da kann dann nur noch ein Wert drinstehen. Es können also nicht alle Zeiten in die Ergebnismenge kommen. Du kannst aber eine Aggregate-Funktion anwenden, also sowas wie das Sum(). Damit kannst du zum Beispiel den kleinsten Wert, den größten Wert, oder auch eine Stringwurst aus allen zusammengehängten Werten ins Ergebnis nehmen. Beispiel siehe verlinkte Handbuchseite zu GroupBy().

  1. Was sind (date, values) hier zu beeuten? Sollte da nicht ein "new" hin?
    .GroupBy(record => record.Date.Date, (date, values) => new Record { Date = date, Value = ...

Auch das ist in dem Handbuch-Beispiel zu sehen. Das ist ein Lambda-Ausdruck, der zwei Werte entgegennimmt. An der Stelle wird eine Funktion erwartet, die zwei Parameter haben möchte. Die muss man dann beim Lambda-Ausdruck auf die gezeigte Weise klammern. Man braucht da ja zum einen das Gruppierkriterum und zum anderen die Datemenge zu diesem Kriterium.

dedlfix.