分组查询



1.分组查询

var group = db.Queryable<Student>().GroupBy(it => it.Id)
    .Having(it => SqlFunc.AggregateCount(it.Id) > 10)
    .Select(it => new { id = SqlFunc.AggregateCount(it.Id) }).ToList();

多个GroupBy写法如下

var group = db.Queryable<Student>().GroupBy(it => it.Id).GroupBy(it => it.Type)
    .Having(it => SqlFunc.AggregateCount(it.Id) > 10)
    .Select(it => new { id = SqlFunc.AggregateCount(it.Id) }).ToList();

还可以

.GroupBy(it => new {it.Id,it.Type})



2.简单去重 

var list3 = db.Queryable<Student>()
.GroupBy(it => new { it.Id, it.Name }).Select(it=>new{ it.id,it.Name}).ToList();
// 性能优于 select distinct id,name from student所以我暂不支持distinct去重,结果是一样的




3.去重并且返回所有列(分组第一条)

group by只能返回特定列,PartitionBy可以返回所有列

var list3 = db.Queryable<Student>()
.PartitionBy(it => new { it.Id, it.Name }).Take(1).ToList();





























































收藏到朋友圈: