LINQ组由一列组成

时间:2017-03-14 14:14:28

标签: c# entity-framework linq linq-to-entities

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

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

1 个答案:

答案 0 :(得分:2)

您按多列分组:

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()
}