【超实用技巧】SqlSugar让关联表总数统计如此简单!

有这样的一个需求,查询一张表的时候,需要查询某条数据在其关联表中的总数。这样的表达看起来比较白痴。用一个例子做下说明。
一共2张表,暂且将他们的名字设置为:table_1table_2
table_1的字段为:idnameid为主键,name为名称;
table_2的字段为:idt1_idnameid为主键,t1_idtable_1idname为名称;
那么分页查询table_1的时候,需要列出table_2t1_id一共有多少条数据,也就是下面这种样子:
table_1的分页数据:

idnamet2_total
1电脑3
2手机8

由于使用的是SqlSugar。在其官网找到了办法。比自己写要简单的多了。

public async Task<List<table_1_dto>>GetPageListAsync()
{
return await db.Queryable<table_1>()
.Select(t1=>new table_1_dto{
	id=t1.id.SelectAll(),
	t2_total = SqlFunc.Subqueryable<table_2>().Where(t2=> t2.t1_id == t1.id).Select(t2=>SqlFunc.AggregateCount(t2.id))
})
.MergeTable()
.ToListAsync()
}

十分简单,不得不佩服SqlSugar确实很强大。
需要注意的是,这里使用了.Select(t2=>SqlFunc.AggregateCount(t2.id))而不是直接Count()
当然使用Count()没有任何问题,关键在于生成的SQL语句。如果使用Count(),生成的SQL子查询是类似于这样的:SELECT COUNT(*) FROM table_2 WHERE t1_id=t1.id。而使用Select(t2=>SqlFunc.AggregateCount(t2.id))的话。生成的SQL子查询是类似于这样的:SELECT TOP 1 COUNT(id) FROM table_2 WHERE t1_id=t1.id
好处自然不言而喻了吧。
做此记录,下回忘了还可以回来看看。不用再跑到官网上挨个去看啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倾斜的水瓶座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值