Linq中的group by多表多字段

本文探讨了SQL与LINQ在分组查询上的不同处理方式。SQL要求SELECT子句中的字段要么出现在GROUP BY子句中,要么为聚合函数的一部分。而在LINQ中,分组操作更灵活,允许选择特定字段进行分组,并返回包含分组键和聚合结果的对象。通过具体示例展示了多表多字段参与分组的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在sql中,如果有group by,那么select的字段只能包含分组内容,或者count、sum、avg这些统计字段。

但在linq里面,是:group 你想要什么字段 by 分组字段

比如:

var q =
    from p in db.Products
    group p by p.CategoryID into g
    select g;

实际应用中,多表多字段参与分组比较常见:

from a in TableA
    join b in TableB on a.Id equals b.aId
    where ((b.Type == 1 || b.Type == 2 || b.Type == 5) && b.State == 1)
    group new { a.Id, b.Name,b,CreateDate } by new { a.Id, b.Name } into g
    select (new Class1 { Id = g.Key.Id, Name = g.Key.Name ?? "" });
 
class Class1
{
    public int Id { get; set; }
    publid string Name { get; set; }

 

转载于:https://www.cnblogs.com/jasonlai2016/p/10189416.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值