SELECT Problem bei LINQ, Lambda
-
Hallo,
meine Abfrage läuft problemlos und auch richtig, nur wie schaffe ich es, dass in meiner Liste am Ende auch tatsächlich die richtige Bezeichnung angezeigt wird?
Momentan steht
System.Linq.Enumerable+WhereSelectEnumerableIterator
2[Projektname.Classes.Verkauf,System.String]` drin.
In der Abfrage, zum Befüllen der Liste, steht der Wert auf jeden Fall mit drin.public static DataTable PivotVerkaufszahlen(string sJahr) { IEnumerable<Verkauf> lstVerkauft = VerkaufsuebersichtEinzelbestellungenListe(); var query = lstVerkauft .Where(y => y.Lieferdatum.ToString().Contains(sJahr)) .GroupBy(c => c.ArtikelNr) .Select(g => new { Ident = g.Key, Bezeichnung = g.Select(b => b.ArtikelName), Januar = g.Where(c => c.Lieferdatum.Month == 1).Sum(c => c.Anzahl), Februar = g.Where(c => c.Lieferdatum.Month == 2).Sum(c => c.Anzahl), March = g.Where(c => c.Lieferdatum.Month == 3).Sum(c => c.Anzahl), April = g.Where(c => c.Lieferdatum.Month == 4).Sum(c => c.Anzahl), Mai = g.Where(c => c.Lieferdatum.Month == 5).Sum(c => c.Anzahl), Juni = g.Where(c => c.Lieferdatum.Month == 6).Sum(c => c.Anzahl), Juli = g.Where(c => c.Lieferdatum.Month == 7).Sum(c => c.Anzahl), August = g.Where(c => c.Lieferdatum.Month == 8).Sum(c => c.Anzahl), September = g.Where(c => c.Lieferdatum.Month == 9).Sum(c => c.Anzahl), Oktober = g.Where(c => c.Lieferdatum.Month == 10).Sum(c => c.Anzahl), November = g.Where(c => c.Lieferdatum.Month == 11).Sum(c => c.Anzahl), Dezmeber = g.Where(c => c.Lieferdatum.Month == 12).Sum(c => c.Anzahl) }); return = IEnumerableToDataTable.ToDataTable(query.ToList()); }
-
Unter der Annahme, dass ArtikelNr und ArtikelName immer paarweise zusammengehören und es z.B. keine Nr mit mehreren Namen oder umgekehrt gibt:
Entweder lässt Du Dir einfach den ersten pro Gruppe zurückgeben:
Bezeichnung = g.First().ArtikelName
oder Du gruppierst direkt "richtig" und sammelst in den Keys alle Infos die unveränderlich sind in einer Gruppe:
GroupBy(c => new { ArtikelNrKey = c.ArtikelNR, ArtikelBezeichungKey = c.ArtikelName}) .Select( g => new { Ident = g.Key.ArtikelNrKey, Bezeichnung = g.Key.ArtikelBezeichnungKey, ... }
-
Vielen Dank!