如何使用dotnet core获取cosmos db中容器的所有项目

Ben*_*min 4 linq .net-core azure-cosmosdb azure-cosmosdb-sqlapi

您好,我想获取 cosmos DB 数据库中容器的所有项目。我可以看到已经有很多可用的方法,但我没有看到任何 getAllItems 或类似的方法。

有没有像使用 LINQ 之类的简单方法来做到这一点?

谢谢

Wil*_*l V 9

如果您想使用 Linq 来执行此操作,可以执行以下操作(如此处答案中的建议:How can I use LINQ in CosmosDB SDK v3.0 async query?):

var db = Client.GetDatabase(databaseId);
var container = db.GetContainer(containerId);

var q = container.GetItemLinqQueryable<Person>();
var iterator = q.ToFeedIterator();
var results = await iterator.ReadNextAsync();
Run Code Online (Sandbox Code Playgroud)

如果您想要非 Linq 解决方案,请使用此解决方案(取自 v3 SDK 示例:https://github.com/Azure/azure-cosmos-dotnet-v3/blob/master/Microsoft.Azure.Cosmos.Samples/Usage /ItemManagement/Program.cs#L259

QueryDefinition query = new QueryDefinition(
            "select * from sales s where s.AccountNumber = @AccountInput ")
            .WithParameter("@AccountInput", "Account1");

        FeedIterator<SalesOrder> resultSet = container.GetItemQueryIterator<SalesOrder>(
            query,
            requestOptions: new QueryRequestOptions()
            {
                PartitionKey = new PartitionKey("Account1"),
                MaxItemCount = 1
            });

        while (resultSet.HasMoreResults)
        {
            FeedResponse<SalesOrder> response = await resultSet.ReadNextAsync();
            // Work through iterator list here
        }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!