Announcement

Collapse
No announcement yet.

Count und group by in LINQ

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Count und group by in LINQ

    Hallo Forum,

    ich brauche wieder mal eure Hilfe.
    Ich habe da ein Problem, das ich nicht so einfach lösen kan. Ich habe zwei Tabellen wie folgt, die über eine id miteinander verbunden sind:

    Tabelle Lager:
    Code:
    LagerID, LagerName, Beschreibung
    1      | aa      | b1
    2      | bb      | b2
    3      | cc      | b3
    4      | dd      | b4
    und Tabelle Geräte:

    Code:
    GräteID, LagerID, StationName, GeräteName
    1       |1      | saa         |g1 
    2       |2      | sbb         |g2
    3       |1      | saa         |g3
    4       |1      | sdd         |g4
    5       |1      | sdd         |g4
    6       |2      | sbg         |g5
    7       |2      | sbz         |g6
    7       |2      | sbb         |g7
    Ich brauch nun eine Ling-Anweisung, die mir folgendes liefert:

    Anzahl Stationen in einem Lager groupiert nach Stationsname in verbindung mit Lager ID, also:
    Stationen im Lager 1 = 3
    Stationen im Lager 2 = 2

    und anzahl Geräte (insgesamt) in dem jeweiligen Lager, also:
    Lager 1 hat 2 Stationen mit insgesamt 4 Geräten
    Lager 2 hat 3 Stationen mit insgesamt 4 Geräten

    Die Ausgabe sollte in etwa so aussehen:

    Lager 1 -> 2 Stationen, 4 Geräte
    Lager 2 -> 3 Stationen, 4 Geräte

    Da ich auch den Lagername und die Lager-Beschreibung der Lager-Tabelle brauche, muss ein Join oder ähnliches aufgebaut werden.
    Also zu jedem Lager in der Tabelle Lager muss die Anzahl der Stationen und die Gesamtanzahl der Geräte
    in diesen Stationen ermittelt werden.

    Danke im Voraus.
    Zuletzt editiert von Smart; 22.09.2013, 17:54.

  • #2
    Hallo,

    für alle, die sich für die Lösung interessieren:

    Code:
                var quary = from geraet in Geraete
                            join lager in Lager on geraet.LagerID equals lager.LagerID
                            group geraet by new { geraet.LagerID, lager.Name, lager.Beschreibung } into grp
                            select new Hilfsklasse
                            {
                                LagerID = grp.Key.LagerID,
                                LagerName = grp.Key.Name,
                                Beschreibung = grp.Key.Beschreibung,
                                AnzahlGeraete = grp.Count(),
                                AnzahlStationen = grp.Select(x => x.StationName).Distinct().Count(),
                            };
    Gruß
    Zuletzt editiert von Smart; 23.09.2013, 11:02.

    Comment

    Working...
    X