使用LINQ在SELECT之后将具有相同ID的行加在一起

时间:2018-07-02 06:43:48

标签: c# linq

您好,我正在使用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

3 个答案:

答案 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

简单的漫画卓悦!