gpt4 book ai didi

c# - Azure IoT 中心设备查询分页继续 token 不起作用

转载 作者:行者123 更新时间:2023-12-03 03:35:17 24 4
gpt4 key购买 nike

当尝试在连接到 Azure IoT 中心的设备的 .NET 6 中创建分页网站时,我发现无论我传递的页码 (pageNumber) 是什么,它总是返回前 10 个设备。我认为 continuationToken 的格式不正确或类似的情况,但没有发生错误。

registryManager = RegistryManager.CreateFromConnectionString("{iot hub connection string}")
int pageSize = 10;
var query = registryManager.CreateQuery("SELECT * FROM devices", pageSize);
var pageToken = "skip=" + pageNumber * pageSize + "&total=" + pageSize;
var continuationToken = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(pageToken));
var page = query.GetNextAsTwinAsync(new QueryOptions() { ContinuationToken = continuationToken });
var deviceList = page.Result.ToList();

最佳答案

我测试了您共享的代码,并注意到 continuationToken 似乎不会影响返回的结果集。这里使用代码生成的 continuationToken 是一个随机字符串,我认为它不包含 pageToken 的任何信息。我找到了一种不同的方法来达到相同的结果。

您可以利用.Net中IEnumerable的Skip和Take方法来实现分页。 query.GetNextAsTwinAsync().Result 提供 Twin 类型的 IEnumerable,您可以在其上应用 Skip 和 Take 方法来获取分页结果。

这是我实现的用于实现 Azure IoT 中心设备分页的代码

        registryManager = RegistryManager.CreateFromConnectionString(connString);
int pageSize = 3;
int pageNumber = 1;
var query = registryManager.CreateQuery("SELECT * FROM devices");
var page = query.GetNextAsTwinAsync().Result.Skip(pageNumber*pageSize).Take(pageSize);
var deviceList = page.ToList();

关于c# - Azure IoT 中心设备查询分页继续 token 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73560219/

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