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:
ArtikelID | Text | Bestand | Zusatzinfo |
Art1 | Hemd 1 | 2 | farbe: grün |
Art2 | Hose | 3 | gelb |
Art3 | Shirt | 0 | rot |
Tabelle 2 wie folgt:
ArtikelID | Text | Bestand | Zusatzinfo |
Art1 | Hemd | 8 | farbe: grün |
Art2 | Hose | 10 | gelb |
Art3 | Shirt | 5 | rot |
Art4 | Bluse | 3 | pink |
Und das soll dann als Ergebnise rauskommen:
ArtikelID | Text | Bestand | Zusatzinfo |
Art1 | Hemd | 10 | farbe: grün |
Art2 | Hose | 13 | gelb |
Art3 | Shirt | 5 | rot |
Art4 | Bluse | 3 | pink |
Mein bisheriger Ansatz mittels LINQ schaut wie folgt aus:
Dim query = (From x In ((From p In tData1
Select p).Union(From pd In tData2 Select pd))
Group x By Key = x.ArtikelID Into grouping = Group
Let SumBestand = grouping.Sum(Function(x As DataClass) x.Bestand)
From Merged In grouping.DefaultIfEmpty()
Select New DataClassWith
{
.ArtikelID = Merged.ArtikelID,
.Text= Merged.Text,
.Bestand = SumBestand,
.Zusatzinfo = Merged.Zusatzinfo
}).ToList
Alles anzeigen
Dummerweise macht er mir dann folgendes:
ArtikelID | Text | Bestand | Zusatzinfo |
Art1 | Hemd | 10 | farbe: grün |
Art1 | Hemd | 10 | farbe: grün |
Art2 | Hose | 13 | gelb |
Art2 | Hose | 13 | gelb |
Art3 | Shirt | 5 | rot |
Art3 | Shirt | 5 | rot |
Art4 | Bluse | 3 | pink |
Art4 | Bluse | 3 | pink |
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...