我有一张艺术家表和一张样式表。
艺术家表: ID 名称 styleid
样式表 ID 名字
艺术家的样式ID
我正在尝试返回样式摘要,其中包括样式ID,样式名称和属于该样式的艺术家数量。
我有以下声明,它让我了解艺术家的身份和数量,但我不知道如何获得样式名称。
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()
};
这可以通过一次往返来实现吗?
答案 0 :(得分:3)
您可以使用匿名类型按多个值进行分组:
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()
};
答案 1 :(得分:1)
您可以在像这样的子查询中进行计数......
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()
}