LINQ 在单列上分组
LINQ group by on a single column
我有一个数据库 table,如下所示:
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
有时是不同的。但是,如果 select 第一次约会就好了。
编辑我想要的结果是:
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()
}
我有一个数据库 table,如下所示:
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
有时是不同的。但是,如果 select 第一次约会就好了。
编辑我想要的结果是:
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()
}