[英]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
。 但是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
您按多列分组:
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.