如何获取Cosmos DB LINQ查询示例所需的object类型IQueryable?
Cosmos DB 无类型
IQueryable<object>获取方法 前置准备
首先安装Cosmos DB官方NuGet包:Install-Package Microsoft.Azure.Cosmos
具体操作步骤
- 第一步:初始化CosmosClient与对应容器实例
using Microsoft.Azure.Cosmos; using Microsoft.Azure.Cosmos.Linq; // 初始化客户端 var cosmosClient = new CosmosClient("你的Cosmos DB连接字符串"); // 绑定目标数据库 var database = cosmosClient.GetDatabase("你的数据库名称"); // 绑定目标数据容器 var container = database.GetContainer("你的容器名称");
- 第二步:调用容器的扩展方法获取
IQueryable<object>对象
直接将GetItemLinqQueryable的泛型参数指定为object即可得到示例中的input对象:
IQueryable<object> input = container.GetItemLinqQueryable<object>(); // 可直接运行文档中的示例查询 var familyNameQuery = input.Select(family => family.parents[0].familyName);
注意事项
- 必须引入
Microsoft.Azure.Cosmos.Linq命名空间,否则无法识别GetItemLinqQueryable扩展方法 - 如果有提前定义的容器数据实体类,建议将泛型参数替换为对应实体类型,得到
IQueryable<你的实体类>,可以获得编译期类型检查,降低运行时报错概率 - 构造完成的LINQ查询需要调用
ToFeedIterator方法执行才能拿到实际结果,示例代码如下:
using var feedIterator = familyNameQuery.ToFeedIterator(); while (feedIterator.HasMoreResults) { var currentPage = await feedIterator.ReadNextAsync(); foreach (var familyName in currentPage) { // 处理查询到的结果 Console.WriteLine(familyName); } }
内容的提问来源于stack exchange,提问作者jhon.smith
相关产品推荐
相关产品推荐

