我创建了一个帮助方法,使用Cosmos DB C#Library以continuationtoken的降序检索行。但是,当我通过降序尝试下单时,它不返回任何行。查询无需orderby或orderbydescending即可运行。请让我知道我需要更正以正确顺序检索行。
public static async Task<(IEnumerable<T> resultRows, string responseContinuation)> GetIAlltemsAsyncOrderByCount(Expression<Func<T,bool>> predicate, Expression<Func<T,object>> orderby,bool descending, int MaxItemCountPerQuery,string continuationToken="")
{
var uri = UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId);
var feedOptions = new FeedOptions
{
MaxItemCount = MaxItemCountPerQuery
};
string responseContinuation = "";
if (!string.IsNullOrEmpty(continuationToken))
{
feedOptions.RequestContinuation = continuationToken;
responseContinuation = continuationToken;
}
var resultRows = new List<T>();
using (var query = descending ? client.CreateDocumentQuery<T>(uri, feedOptions).Where(predicate).OrderByDescending(orderby).AsDocumentQuery() : client.CreateDocumentQuery<T>(uri, feedOptions).Where(predicate).OrderBy(orderby
).AsDocumentQuery())
{
if (query.HasMoreResults)
{
var result = await query.ExecuteNextAsync<T>();
responseContinuation = result.ResponseContinuation;
resultRows.AddRange(result);
/* process result */
}
}
return (resultRows, responseContinuation);
}
答案 0 :(得分:1)
根据你的描述,我在我这边检查了这个问题,发现我可能会遇到类似的问题。然后我使用Fiddler来捕获网络跟踪,如下所示:
索引类型:哈希(相等查询),范围(相等,范围或 ORDER BY查询)或空间(空间查询)。
Range支持高效的相等查询,范围查询(使用&gt;,&lt;,&gt; =,&lt; =,!=)和ORDER BY查询。 ORDER默认情况下,查询还需要最大索引精度(-1)。数据类型可以是String或Number。
我登录门户网站选择我的Cosmos DB帐户并修改Scale&amp ;;下的索引政策。我的收藏设置如下:
根据以上更改,我可以按字符串数据类型进行排序。