gpt4 book ai didi

c# - 在 servicestack ormlite 中分页所有结果

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:07 25 4
gpt4 key购买 nike

有什么方法可以对检索所有结果的 Ormlite 查询的结果进行分页。从这里的另一篇文章中,我发现了以下内容:

var result = db.Select<Group>( q => q.Where(predicate).Limit(skip:5, rows:10 ));

但是,我想在没有“Where”子句的情况下进行查询。省略这段代码时,Limit 方法将不再可用。如此有效,我想做的是这样的:

var result = db.Select<Group>().Limit(skip:5, rows:10);

也许选择不是检索所有记录的正确方法?

最佳答案

db.Select<T>以相同的方式工作并针对指定的表执行 SELECT,但是如果您想在服务器上执行自定义查询,您需要像第一个示例中那样提供查询:

var result = db.Select<Group>(q => q.Where(predicate).Limit(skip:5, rows:10));

也可以改写为:

var q = db.From<Group>();
db.Select(q.Where(predicate).Limit(skip:5, rows:10));

当您不提供查询时,您将针对表执行 SELECT all,例如:

db.Select<Group>()

已执行查询并返回 Group 中的所有行表。

如果你想限制它,你仍然需要提供查询,例如:

db.Select<Group>(q => q.Limit(skip:5, rows:10));

或者:

db.Select(db.From<Group>().Limit(skip:5, rows:10));

Paging in AutoQuery

此外,由于您要对查询进行分页,因此您应该查看 automatic support for paging in AutoQuery其中包括类型化服务客户端支持,例如:

client.Get(new QueryRockstars { Skip=10, Take=20, OrderBy="Id" });

以及提供 typed streaming APIGetLazy<T>它在幕后透明地执行多个分页查询:

var top250 = client.GetLazy(new QueryMovies { 
Ratings = new[]{ "G", "PG-13" }
})
.Take(250)
.ToList();

关于c# - 在 servicestack ormlite 中分页所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34672944/

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