Table of Contents

表分组

  • 从表分组查询获取数据组件
  • 依赖sql分组逻辑分组
  • 本组件用来处理sql的SELECT语句
  • 本组件是对ShadowSql.Core同名组件的扩展

1. 接口

2. 基类

3. 类

GroupByTableSelect<TTable>

class GroupByTableSelect<TTable> : SelectBase<TTable>
    where TTable : ITable;

4. ToSelect

创建GroupByTableSelect<TTable>

4.1 ToSelect扩展方法

  • 从sql分组获取
  • 依赖sql分组
  • 筛选的默认字段为当前分组字段
GroupByTableSelect<TTable> ToSelect<TTable>(this GroupByTableSqlQuery<TTable> source)
        where TTable : ITable;
var select = _db.From("Users")
    .SqlGroupBy("City")
    .ToSelect();
// SELECT [City] FROM [Users] GROUP BY [City]

4.2 ToSelect重载扩展方法

  • 从逻辑分组获取
  • 依赖逻辑分组
  • 筛选的默认字段为当前分组字段
GroupByTableSelect<TTable> ToSelect<TTable>(this GroupByTableQuery<TTable> source)
        where TTable : ITable;
var select = _db.From("Users")
    .ToSqlQuery()
    .Where("Status=1")
    .GroupBy("City")
    .ToSelect();
// SELECT [City] FROM [Users] WHERE Status=1 GROUP BY [City]

5. SelectAggregate方法

  • 聚合筛选
GroupByTableSelect<TTable> SelectAggregate(Func<TTable, IAggregateFieldAlias> select);
var select = new CommentTable()
    .GroupBy(c => [c.PostId])
    .ToSelect()
    .SelectGroupBy()
    .SelectAggregate(c => c.Pick.SumAs("PickTotal"));
// SELECT [PostId],SUM([Pick]) AS PickTotal FROM [Comments] GROUP BY [PostId]

6. 其他相关功能