Linq to sql 使用LinqToSQL进行分组和计数
我有一张艺术家桌和一张风格桌 艺术家表: 身份证件 名称 styleid 样式表 身份证件 名字 艺术家有一个风格id 我试图返回一个样式摘要,其中包括样式id、样式名称和属于该样式的艺术家数量 我得到了下面的声明,它让我的id和艺术家的数量,但我不知道如何也得到样式名称Linq to sql 使用LinqToSQL进行分组和计数,linq-to-sql,count,grouping,Linq To Sql,Count,Grouping,我有一张艺术家桌和一张风格桌 艺术家表: 身份证件 名称 styleid 样式表 身份证件 名字 艺术家有一个风格id 我试图返回一个样式摘要,其中包括样式id、样式名称和属于该样式的艺术家数量 我得到了下面的声明,它让我的id和艺术家的数量,但我不知道如何也得到样式名称 return from s in DBContext.Styles join artist in DBContext.Artists on s.ID equals artist
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()
};
单次往返是否可行?您可以在这样的子查询中进行计数
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()
}
您可以使用匿名类型按多个值分组:
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()
};