我在azure documentDB平台的c#中开发。 我尝试在我的应用程序中实现分页体系结构。 我的代码:
var userQuery = _client.CreateDocumentQuery<User>(
_uriUsersCollection, queryStr, options).AsDocumentQuery();
我的代码在AsDocumentQuery()函数上显示错误(它不被识别为IQueryable方法的一部分(我在互联网上看到该函数识别的几个例子)。所以当我尝试激活查询时.ExecuteNextAsync它不存在。 我使用Microsoft.Azure.Documents.Client dll版本1.11.0.0。 谢谢你的帮助 MAK
答案 0 :(得分:6)
对于带有Continuation Token的场景,我经常使用这个助手类:
JScrollPane scrollPane = new JScrollPane(list_1);
list_1 = new JList();
scrollPane.setViewportView(list_1);
list_1.setBounds(16, 94, 579, 248);
contentPane.add(list_1);
contentPane.add(scrollPane);
public class PagedResults<T>
{
public PagedResults()
{
Results = new List<T>();
}
/// <summary>
/// Continuation Token for DocumentDB
/// </summary>
public string ContinuationToken { get; set; }
/// <summary>
/// Results
/// </summary>
public List<T> Results { get; set; }
}
现在,您可以在代码中或多或少地使用它:
public static async Task<PagedResults<T>> ToPagedResults<T>(this IQueryable<T> source)
{
var documentQuery = source.AsDocumentQuery();
var results = new PagedResults<T>();
try
{
var queryResult = await documentQuery.ExecuteNextAsync<T>();
if (!queryResult.Any())
{
return results;
}
results.ContinuationToken = queryResult.ResponseContinuation;
results.Results.AddRange(queryResult);
}
catch
{
//documentQuery.ExecuteNextAsync throws an Exception if there are no results
return results;
}
return results;
}
答案 1 :(得分:3)