繁体   English   中英

LINQ组由一列组成

[英]LINQ group by on a single column

我有一个如下所示的数据库表:

ID       USERID       DATE            NAME
1        1            01-01-2001      aaaa
1        2            01-02-2001      aaaa
1        3            01-03-2001      aaaa
2        5            02-02-2002      bbbb
2        6            02-02-2002      bbbb
2        7            02-02-2002      bbbb

所以我想按ID对所有内容进行分组,因此每个ID都有多个USERIDs 但是DATENAME都是一样的。 那么如何将其作为linq查询呢?

到目前为止,我想到了这样做,这对用户来说很有用

from table in context.table
group table.USERID by table.ID into grp
orderby grp.Key descending
select new
{
    ID = grp.Key,
    Users = grp.ToList()
}

但是,如果我添加其他项目(如DATE这不起作用,因为DATE有时会有所不同。 但是,如果它会选择第一个日期就好了。

编辑我想要的结果是:

ID       Users        DATE            NAME
1        1,2,3        01-01-2001      aaaa
2        5,6,7        02-02-2002      bbbb

您按多列分组:

from table in context.table
group new{table.UserID,table.Date} by new{table.ID,table.Name} into grp
orderby grp.Key.ID descending
select new
{
    ID = grp.Key.ID,
    Date=grp.FirstOrDefault().Date,
    Name=grp.Key.Name,
    Users = grp.Select(e=>e.UserID).ToList()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM