我有一个如下所示的数据库表:
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
。但是DATE
和NAME
都是一样的。那么如何将其作为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
答案 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()
}