C# 在LINQ中分组多个表
我有一个非常简单的SQL查询:C# 在LINQ中分组多个表,c#,sql,linq,linq-to-sql,C#,Sql,Linq,Linq To Sql,我有一个非常简单的SQL查询: SELECT r.SpaceID, Count (*), SpaceCode FROM Rider r JOIN Spaces s ON r.SpaceID = s.SpaceID GROUP BY r.SpaceID, s.SpaceCode 请注意,我的group by子句是关于多个表的,我想在LINQ中也这样做,我知道如何对单个表进行分组,但关于多个表,我不知道。要对多个表进行分组,可以执行以下操作: group new { r,s } by new
SELECT r.SpaceID, Count (*), SpaceCode
FROM Rider r JOIN Spaces s
ON r.SpaceID = s.SpaceID
GROUP BY r.SpaceID, s.SpaceCode
请注意,我的group by子句是关于多个表的,我想在LINQ中也这样做,我知道如何对单个表进行分组,但关于多个表,我不知道。要对多个表进行分组,可以执行以下操作:
group new { r,s } by new { r.SpaceID, s.SpaceCode }
这可能有助于:
(
from r in db.Rider
join s in db.Spaces
on r.SpaceID equals s.SpaceID
group new { r,s } by new { r.SpaceID, s.SpaceCode }
into grp
select new
{
Count=grp.Count(),
grp.Key.SpaceID,
grp.Key.SpaceCode
}
)
其中db是数据库上下文您可以使用以下命令
grp.Sum(x => x.r.Col1)
它工作得很好。请看这里:谢谢,我已经看到了,但是Concat似乎不是一个好的选项,而且我的两个表的结构都太不同了,所以这对我来说不起作用,选择部分应该是:
Select new{Count=grp.Count(),grp.Key.SpaceID,grp.Key.SpaceCode}
@Arion:Petr Behensky的更正仍然没有出现在您的解决方案中。在这种情况下,如何在select new中获取r,s的其他字段?grp.r或grp.s似乎不起作用。如何对grp.sum(x=>x.Col1)
这样的列求和?我正在尝试,但它不起作用。如何对选择新中的r
或s
中的其他列求和?