gpt4 book ai didi

ormlite-servicestack - 我如何在 ServiceStack Ormlite 中计数(DISTINCT)?

转载 作者:行者123 更新时间:2023-12-05 02:20:53 27 4
gpt4 key购买 nike

我正在 ServiceStack 的 OrmLite 中编写分页查询,选择页面范围内的总记录数和记录 ID。假设 query 是一些任意的 SqlExpression 选择一堆记录:

var idQuery = query.SelectDistinct(r => r.Id);
var ids = Db.Column<int>(idQuery.Skip(request.Skip).Take(request.Take));
var total = Db.Count(idQuery);

OrmLite 生成两个查询,一个用于 ids:

SELECT DISTINCT ...

总计一个:

SELECT COUNT(*)

我试图让 OrmLite 为整个查询生成 SELECT COUNT(DISTINCT Id),或者执行等效的操作。这可能吗?

最佳答案

在以前的 OrmLite 版本中,您需要使用自定义 SQL:

var count = db.Scalar<long>(idQuery.Select("COUNT(DISTINCT Id)"));

我刚刚添加了对 Sql.CountDistinct in this commit 的支持这将使您可以使用类型化 API:

var count = db.Scalar<long>(idQuery.Select(x => Sql.CountDistinct(x.Id)));

此更改从现在的 v4.0.61 开始可用 available on MyGet .

关于ormlite-servicestack - 我如何在 ServiceStack Ormlite 中计数(DISTINCT)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37832008/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com