如何使用应用的参数记录查询定义?

问题描述 投票:0回答:1

可以使用以下 C# 代码在 .NET 中创建QueryDefinition(包:Microsoft.Azure.Cosmos

QueryDefinition query = new QueryDefinition(
    "select * from t where t.Account = @account")
    .WithParameter("@account", 12345);

但是如何使用应用的参数记录 QueryDefinition?

例如将在上面的代码中执行的查询是

"select * from t where t.Account = 12345"
作为字符串,因此可以使用以下代码将其写入控制台

string queryWithParameters = query // Missing step here
Console.WriteLine(queryWithParameters);
c# azure-cosmosdb
1个回答
0
投票

如何使用应用的参数记录查询定义?

要将带有应用参数的 QueryDefinition 记录到控制台,您可以按照以下代码操作。参数

@account
将过滤并获取相应的数据,并使用
Console.WriteLine()
方法在控制台中打印。

public static async Task Main(string[] args)
{
    try
    {
        CosmosClient cosmosClient = new CosmosClient(EndpointUri, PrimaryKey);

        QueryDefinition query = new QueryDefinition(
            "SELECT * FROM c WHERE c.Account = @account")
            .WithParameter("@account", 12345);

        var container = cosmosClient.GetContainer(DatabaseId, ContainerId);
        FeedIterator<dynamic> resultSetIterator = container.GetItemQueryIterator<dynamic>(query);

        while (resultSetIterator.HasMoreResults)
        {
            FeedResponse<dynamic> response = await resultSetIterator.ReadNextAsync();
            foreach (var item in response)
            {
                Console.WriteLine(item);
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error: {ex.Message}");
    }
}

输出:

{
  "id": "1",
  "Account": 12345,
  "Name": "John Doe",
  "Age": 30,
  "_rid": "GkY+AIHFP1sBAAAAAAAAAA==",
  "_self": "dbs/GkY+AA==/colls/GkY+AIHFP1s=/docs/GkY+AIHFP1sBAAAAAAAAAA==/",
  "_etag": "\"5700d1b0-0000-4d00-0000-65c99cfd0000\"",
  "_attachments": "attachments/",
  "_ts": 1707711741
}
© www.soinside.com 2019 - 2024. All rights reserved.