C# 在LINQ中分组多个表

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

我有一个非常简单的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 { 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
中的其他列求和?