【问题标题】:Group Multiple Tables in LINQ在 LINQ 中对多个表进行分组
【发布时间】:2012-02-02 05:27:55
【问题描述】:

我有一个非常简单的 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 中做同样的事情,我知道如何对单个表进行分组,但关于多个表我不知道。

【问题讨论】:

  • 谢谢,我已经看到了,但是 Concat 似乎不是一个好的选择,而且我的两个表的结构太不同了,所以这对我不起作用,跨度>

标签: c# sql linq linq-to-sql


【解决方案1】:

要对多个表进行分组,您可以这样做:

group new { r,s } by new { r.SpaceID, s.SpaceCode }

【讨论】:

  • 如何在rs 中对select new 中的其他列求和?
【解决方案2】:

这可能会有所帮助:

(
    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 是数据库上下文

【讨论】:

  • 选择部分应该是: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) 之类的列求和?我正在尝试,但它不起作用
【解决方案3】:

您可以使用以下命令。

grp.Sum(x => x.r.Col1)

效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多