.NET LinQ (Grouping und Summe)

  • Hallo zusammen,

    vielleicht kennt sich hier ja jemand mit .NET und LINQ aus...
    Ich habe zwei Tabellen (datatables), welche die gleiche Struktur (Spalten) haben.
    Nun möchte ich diese gerne miteinander verbinden, und nach der ArtikelID gruppieren und gleichzeitig möchte ich ganz gerne den Bestand summieren...

    Tabelle 1 schaut z.B: so aus:

    ArtikelIDTextBestandZusatzinfo
    Art1Hemd 12farbe: grün
    Art2Hose3gelb
    Art3Shirt0rot


    Tabelle 2 wie folgt:

    ArtikelIDTextBestandZusatzinfo
    Art1Hemd8farbe: grün
    Art2Hose10gelb
    Art3Shirt5rot
    Art4Bluse3pink


    Und das soll dann als Ergebnise rauskommen:

    ArtikelIDTextBestandZusatzinfo
    Art1Hemd10farbe: grün
    Art2Hose13gelb
    Art3Shirt5rot
    Art4Bluse3pink


    Mein bisheriger Ansatz mittels LINQ schaut wie folgt aus:

    Dummerweise macht er mir dann folgendes:

    ArtikelIDTextBestandZusatzinfo
    Art1Hemd10farbe: grün
    Art1Hemd10farbe: grün
    Art2Hose13gelb
    Art2Hose13gelb
    Art3Shirt5rot
    Art3Shirt5rot
    Art4Bluse3pink
    Art4Bluse3pink


    Quasi, er macht die Summe richtig, ABER, jeder Artikel ist dann auch zweimal drin...
    Leider kann ich es nicht vorher (mittels SQL) gruppieren / summieren, ich MUSS es mit der DataTable (und oder List (Of ...)) machen, da die Daten bereits in der Applikation sind, und keine weitere Verbindung mehr zu den Daten auf dem Server liegen...

  • Ich habe keine Ahnung von LinQ, aber das, was ich da sehe, würde ich unter Linux mit "uniq" lösen (doppelte Einträge in der Ausgabe entfernen). Ein Googlen nach "Linq Unique" gibt mir verweise zu einer "Distinct()" Option. Vielleicht ist das ja was:

    https://docs.microsoft.com/de-de/dotnet/a…iew=netcore-3.1

    https://stackoverflow.com/questions/3519…th-linq/3521137

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Ooooohh man...
    so nah und doch so fern!


    Code
    Dim query = (From tData In tDataMandant1.Union(tDataMandant2) Group By GrpKey = tData.ArtikelID Into MergedData = Group
         Select New DataClass With
         {
            .ArtikelID = MergedData.First.ArtikelID,
            .Text= MergedData.First.Text,
            .Bestand = MergedData.Sum(Function(x) x.Bestand),
            .ZusatzInfo = MergedData.First.ZusatzInfo                      
         }
      ).ToList

    So bekomme ich mein Ergebnis, so wie ich es möchte...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!