Frage

Ich habe einen Künstlertisch und einen Stiltisch.

Künstlertabelle: ID Name StyleId

Style Table ID Name

Ein Künstler hat eine Stil -ID

Ich versuche, eine Stilzusammenfassung zurückzugeben, die Stil -ID, Stilname und Anzahl von Künstlern enthält, die zu diesem Stil gehören.

Ich habe die folgende Aussage, die mir den Ausweis und die Anzahl der Künstler bringt, aber ich kann nicht sehen, wie ich auch den Stilnamen bekommen kann.

          return from s in DBContext.Styles
               join artist in DBContext.Artists on s.ID equals artist.StyleID
               group artist by artist.StyleID into a
               select new DTO.StyleSummary
               {
                   ID = a.Key,
                   NumberOfArtists = a.Count()
               };

Ist das mit einer einzelnen Hin- und Rückfahrt möglich?

War es hilfreich?

Lösung

Sie können einen anonymen Typ zum Gruppen nach mehreren Werten verwenden:

    return from s in DBContext.Styles
           join artist in DBContext.Artists on s.ID equals artist.StyleID
           group artist by new {s.ID, s.Name } into a
           select new DTO.StyleSummary {
               ID = a.Key.ID,
               Name = a.Key.Name,
               NumberOfArtists = a.Count()
           };

Andere Tipps

Sie könnten in einer Sub -Abfrage wie dieser zählen ...

var results =
    from s in DBContext.Styles
    select new
    {
        Id = s.Key,
        NumberOfArtists = 
        (
            from a in DBContext.Artists
            where a.StyleId = s.StyleId
            select a
        ).Count()
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top