none
LiNQ und Group.Sum RRS feed

  • Frage

  • Hallo Leute,
    wie kann ich in der untenstehenden Abfrage eine Where-Klausel (where .Farbe = "Blau" bzw. "Rot") einbauen, sodass
    SumBlau die summierte Menge der blauen und SumRot die summierte Menge der roten enthält?

    Vielen Dank im Voraus
    Christian Tauschek

                'diese Abfrage liefert bei SumBlau und SumRot den gleichen Wert, weil mir die Where-Klausel bei Group.Sum fehlt
                Dim Result = From A In MyCollection _
                Group A By A.Farbe _
                Into Group _
                Select New With { _
                Key .Farbe = Group.First().Farbe, _
                Key .SumBlau = Group.Sum(Function(x) x.Menge), _
                Key .SumRot = Group.Sum(Function(x) x.Menge) _
                }
    



    Christian Tauschek

    Samstag, 28. September 2013 19:27

Antworten

  • Hallo,
    in LINQ kennst sollte dir das Select-Schlüsselwort mittlerweile etwas ein Begriff sein. Damit kann man ein neues Objekt auswählen. LINQ hat den Vorteil, das es nicht zwingend von der eigentlichen Sprach-Syntax abhängt, weil es für jedes Schlüsselwort unzählige Methiode gibt die das gleiche tun. Auch Select() bzw. Where().

    Nachfolgende Codezeile Summiert dir also nur die Elemente, welche als Farbe "Blau" gewählt haben:

    Group.Where(Function(x) x.Farbe = "Blau").Sum(Function(x) x.Menge)

    Nun ist für mich deine Abfrage etwas Sinnfrei, weil jede Gruppe nur eine einzige Farbe haben kann. Somit erhälst du so etwas:

    Gruppennr.  Farbe   SumRot  SumBlau
    0           Rot     12      0
    1           Blau    0       8

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 29. September 2013 13:39
    Moderator