当使用 SQLSugar 进行分组操作时,返回的结果集只包含分组的字段以及聚合函数的结果,其他字段会被忽略掉。如果需要保留其他字段的值,可以使用子查询的方式来实现。

例如,假设有一个表 'users',包含字段 'id'、'name'、'age',我们想要按照年龄分组,并计算每个年龄段的人数。可以使用以下方式来处理:

var result = db.Queryable<User>()
    .GroupBy(u => u.Age)
    .Select(u => new
    {
        Age = u.Age,
        Count = SqlFunc.AggregateCount(u.Id),
        Users = db.Queryable<User>().Where(x => x.Age == u.Age).ToList() // 使用子查询获取每个年龄段的用户列表
    })
    .ToList();

在上述示例中,通过使用子查询 db.Queryable<User>().Where(x => x.Age == u.Age).ToList(),保留了每个年龄段的用户列表。这样就可以在结果集中获取到分组后的字段以及其他字段的值。

注意:使用子查询可能会影响性能,特别是在数据量较大的情况下。因此,在使用子查询时需要根据实际情况进行权衡和优化。

SQLSugar 分组操作保留其他字段:子查询技巧

原文地址: https://www.cveoy.top/t/topic/jjUw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录