Daten gruppieren



  • Hallo,

    ich möchte meine Daten quartalsbezogen ausgeben.
    Es handelt sich dabei um Anlieferungen von Lieferanten, wo ich nur die einzenen Zeilen als Summe für jedes Quartal darstellen möchte.

    Im Datagrid sehen meine Daten aktuell so aus:

    Lieferant | Lieferdatum | Quartal
    Haller | 20.01.2018 | 1
    Haller | 12.02.2018 | 1
    Haller | 16.03.2018 | 1
    Haller | 05.05.2018 | 2
    Weber | 18.01.2018 | 1
    Haller | 01.08.2018 | 3
    Weber | 22.12.2018 | 4
    ...

    Die Liste sollte am Ende so aussehen:
    Lieferant | 1. Quartal | 2. Quartal | 3. Quartal | 4. Quartal | Gesamt
    Haller | 3 | 1 | 1 | 0 | 5
    Weber | 1 | 0 | 0 | 1 | 2

    Kann mir bitte jemand einen Tipps geben, wie ich entsprechend gruppieren bzw. aufsummieren muss??

    Danke!

    Hier noch meine Abfrage:

    var qry = (from w in ctx.tblanlieferung
                                  orderby w.anlieferungDatum descending
                                  select new Anlieferung
                                  {
                                      EkId = (int)w.bestellungen_ekId,
                                      LieferantName = w.lieferantName,
                                      Anlieferdatum = w.weDatum,
                                      Quartal = wquartal
                                  }).OrderByDescending(x => x.EkId ).ThenByDescending(y => y.LieferantName);
                       return qry.ToList();
    


  • Ich habe nun folgende Abfrage gemacht.
    Weshalb erhalte ich zu den Quartalen, also in der Abfrage .Count keine Zahlen, sondern nur 0?

    var query = liste
                        .Where(y => y.anlieferungDatum.ToString().Contains(sJahr))
                        .GroupBy(c => new { Lieferant = c.LieferantName })
                        .Select(g => new
                        {
                            Lieferant = g.Key.Lieferant,
                            Erstes = g.Where(c => c.Quartal == 1).Count(),
                            Zweites = g.Where(c => c.Quartal == 2).Count(),
                            Drittes = g.Where(c => c.Quartal == 3).Count(),
                            Viertes = g.Where(c => c.Quartal == 4).Count(),
                            Gesamt = g.Where(c => c.Lieferdatum.Month != 0).Count()
                        });
    


  • Durch das GroupBy sind die Informationen über die einzelnen Zeilen nicht mehr vorhanden. Du mußt also jeweils eigene SELECT-Abfragen stattdessen durchführen.


Anmelden zum Antworten