Liste einer Tabelle gruppieren und als neue Liste zurück erhalten

  • C#

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von MichaHo.

    Liste einer Tabelle gruppieren und als neue Liste zurück erhalten

    Hi,
    ich hab gerade ein für mich kniffeliges Problem.
    In meiner DB gibt es eine Tabelle PresentEntries, hier werden Daten gespeichert wie
    Person, Datum, Status, Anzahl.

    Nun möchte ich gerne eine Liste dieser Tabelle nach der Person gruppieren, die Anzahl summieren und als neue Liste zurück geben.
    Ich habe versucht mit diesen Beispielen das zu erreichen, leider erhalte ich immer alle Personen zurück.

    mein aktueller Versuch:

    C#-Quellcode

    1. public static List<PresentEntry> GetGroupedList(DayOfWeek weekday)
    2. {
    3. using (var prov = new PresentEntryProvider())
    4. {
    5. List<PresentEntry> newList = new List<PresentEntry>();
    6. var groupedList = from entry in prov.GetList().Where(d => d.Date.DayOfWeek == weekday)
    7. let weight = GetPersonWeight(entry.PersonId, weekday)
    8. group entry by entry.Person.FullName;
    9. foreach (var entryGroup in groupedList)
    10. {
    11. foreach (var entry in entryGroup)
    12. {
    13. newList.Add(entry);
    14. }
    15. }
    16. return newList;
    17. }
    18. }


    Hierbei werden allerdings alle 6 Einträge für den Montag angezeigt, es sollten aber nur 2 sein, denn es sind momentan nur 2 Personen, die Montags da waren (Beispiel DB)

    das Property Weight ist glaub blöd gewählt, es ist eigentlich ein Count...
    Ziel ist es, nachher in der UI eine Übersicht der Personen zu haben, mit der Anzahl der Tage die sie am Training teilgenommen haben. (hier muss nochmal nach Tagen unterschieden werden, Montag, Donnerstag und Samstag.)

    Ich habe noch 2 Bilder hinzugefügt, so, wie es mit diesem Code oben als Ergebnis aussieht und eins wie ses aussehen soll.



    Die Anzahl wird schonmal richtig aufsummiert.

    Wie muss ich dies denn abändern?

    Danke Euch
    "Hier könnte Ihre Werbung stehen..."
    Hallo

    Du kannst Probieren dem Linq Query ein DISTINCT anzuhängen. Das sollte in diesem Fall klappen. Zumindest wenn ich das jetzt richtig gelesen habe.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hi,
    @Nofear23m Danke Dir, hab’s dann aber jetzt anders gemacht, denn ich hatte mal wieder das Datenmodell falsch. Nun hat Person eine Auflistung von Anwesenheitseinträgen PresentEntry
    und nun kann ich auch von jeder Person die Einträge zählen und schauen wie oft er beim Training war.

    @ErfinderDesRades ja, das weight ist blöd gewählt, hab da jetzt DayCount draus gemacht.
    Im Grunde benötige ich das, um die Einträge aufzusummieren, wobei mir jetzt grad beim Schreiben einfällt das ich das ja auch mit Count machen kann anstatt sum... Ich dämel
    "Hier könnte Ihre Werbung stehen..."