Gruppierung und Zählung mit Linqtosql
-
20-08-2019 - |
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?
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