我可能到处搜索,但没有找到正确的页面,有人可以向我解释如何为
orderby
编写正确的语法。
我认为这个 & 符号有问题,它是一个查询运算符,我在
filter
条件内使用它。
当我不使用
orderby
和 top
时一切正常。
using Azure.Data.Tables;
// ...
TableClient releases_table;
// ...
releases_table = tableServiceClient.GetTableClient(tableName: "releases");
// ...
string filter = $"PartitionKey eq '{results[0]["productType"]}' and RowKey ne '' and RowKey ge '{startDate:yyyyMMddHHmmss}' and RowKey le '{endDate:yyyyMMddHHmmss}'&$orderby=Timestamp desc&$top=1";
var queryResponse2 = releases_table.Query<TableEntity>(filter: filter);
我想要我的 Azure 表中基于
Timestamp
属性的最新条目。
对于 C# 中用于 Azure.Data.Tables 的 OData 表达式,orderby 的正确语法是什么?
下面的代码使用正确的语法与
orderby
并与 OrderByDescending
属性一起正常工作,如下面的代码所示。它按降序对 Price
列进行排序,如下面的输出所示。
class Program
{
static async Task Main(string[] args)
{
string connectionString = "*****";
string tableName = "TableA";
TableServiceClient serviceClient = new TableServiceClient(connectionString);
TableClient tableClient = serviceClient.GetTableClient(tableName);
string filter = $"PartitionKey eq 'Products'";
List<TableEntity> results = await FetchSortedResults(tableClient, filter, "Price");
foreach (TableEntity entity in results)
{
Console.WriteLine($"Name: {entity.GetString("Name")}, Price: {entity.GetDouble("Price")}");
}
}
static async Task<List<TableEntity>> FetchSortedResults(TableClient tableClient, string filter, string orderByProperty)
{
List<TableEntity> entities = new List<TableEntity>();
await foreach (TableEntity entity in tableClient.QueryAsync<TableEntity>(filter))
{
entities.Add(entity);
}
entities = entities.OrderByDescending(e => e.GetDouble(orderByProperty)).ToList();
return entities;
}
}
在上面的代码中,
OrderByDescending
属性使用了正确的语法,下面是成功检索数据的输出。
输出:
欲了解更多信息,请参阅此文档。