C#中Azure.Data.Tables的OData orderby表达式正确语法咨询
正确的Azure Table查询写法
你错把$orderby和$top这类OData查询选项直接拼进了filter字符串里,这不符合Azure.Data.Tables SDK的使用规则——filter参数仅负责存放过滤条件,排序、分页需要通过单独参数传递。
修正后的代码示例
using Azure.Data.Tables; // ... TableClient releases_table; // ... releases_table = tableServiceClient.GetTableClient(tableName: "releases"); // 仅保留过滤逻辑作为filter参数 string filter = $"PartitionKey eq '{results[0]["productType"]}' and RowKey ne '' and RowKey ge '{startDate:yyyyMMddHHmmss}' and RowKey le '{endDate:yyyyMMddHHmmss}'"; // 通过Query方法的专属参数指定排序和条数 var queryResponse2 = releases_table.Query<TableEntity>( filter: filter, orderBy: entity => entity.Timestamp, orderByDescending: true, top: 1);
另一种写法(直接用字符串指定排序规则)
如果更习惯OData风格的排序字符串,也可以这样写:
var queryResponse2 = releases_table.Query<TableEntity>( filter: filter, orderBy: "Timestamp desc", top: 1);
这样就能正确获取符合过滤条件的最新(Timestamp最晚)条目了。
内容的提问来源于stack exchange,提问作者user8417839
相关产品推荐
相关产品推荐

