您好,我正在使用LINQ查询这样的表:
AlbumID | Spotify | iTunes
--------------------------
5 | 12 | 4
5 | 18 | 6
6 | 10 | 8
我想将具有相同唯一AlbumID
的行加在一起,我知道GroupBy
,但是将所有相似的ID分组在一起,所以我使用了Where
,它使用{{1} }(在此示例中,输入arg可能为albumID
)
5
但是当我打印到调试控制台时,它没有结合唯一的ID
var platformArray = Context.Analytics.Where(x => x.AlbumID == albumId).Select(s => new
{
Id = s.AlbumID,
Spotify = s.SpotifyClicks,
Itunes = s.ItunesClicks
});
我看到了(为清楚起见添加了箭头):
foreach (var item in platformArray)
{
Debug.WriteLine(item.Id);
Debug.WriteLine(item.Spotify);
Debug.WriteLine(item.Itunes);
}
如何重新格式化我的LINQ代码以打印出类似以下内容的内容:
5 <-ID
12 <-Spotify
4 <-ITunes
5 <-ID
18 <-Spotify
6 <-ITunes
谢谢!
编辑:添加我的分析类
5 <-ID
30 <-Spotify
10 <-Itunes
答案 0 :(得分:0)
尝试以下代码:
var List = from element in prod
group element by new { element.Id } into g
select new yourClass
(
Id = g.First().ID,
Spotify = g.Sum(s => s.Spotify)
Itunes = g.Sum(s => s.Itunes)
);
答案 1 :(得分:0)
因此,我设法借助Hasan对我的原始帖子的评论和一些其他修补程序来弄清这一点:
var query = Context.Analytics
.Where(x => x.AlbumID == albumId)
.GroupBy(c => c.AlbumID)
.Select(
g =>
new
{
Id = g.Key,
Spotify = g.Sum(s => s.SpotifyClicks),
ITunes = g.Sum(s => s.ItunesClicks),
}
);
这仅查询我的特定albumID
,并将具有该特定ID的所有行加起来!
谢谢大家
答案 2 :(得分:0)
因此,在将具有相同AlbumId
的相册分组到一组相册之后,您想要将组中的所有相册转换为一个对象,其中包含公用AlbumId
,所有{组中所有相册的{1}},以及组中所有相册的Spotify
的总数。
iTunes
简单的漫画卓悦!