c# - 带有 .NET SDK 3.6 的 Azure Cosmos 抛出 LINQ 查询不支持 Group By

标签 c# .net linq azure-cosmosdb

根据documentation自 .NET SDK 3.3 起支持分组依据我在 LINQPad 中编写了一些测试代码以使用 LINQ 查询本地 Azure Cosmos 模拟器,但它抛出以下错误消息:

Method 'GroupBy' is not supported., Windows/10.0.18362 cosmos-netstandard-sdk/3.4.2

我使用的是 NuGet 包 Microsoft.Azure.Cosmos 版本 3.6.0

我的查询如下所示:

var query = container.GetItemLinqQueryable<MyObject>()
    .GroupBy(a => a.Id)
    .ToFeedIterator();

(请注意,我意识到这个查询是没有意义的,这只是一个例子)

在 Web 界面中执行类似的 SQL 效果很好:

SELECT
    o.id
FROM
    MyObjects o
GROUP BY
    o.id

如果我通过 C# SDK 执行 SQL,似乎也可以正常工作:

var queryDef = new QueryDefinition("SELECT i.id FROM items i GROUP BY i.id");
var query = container.GetItemQueryIterator<ToDoItem>(queryDef);
var items = new List<ToDoItem>();

while (query.HasMoreResults)
{
    items.AddRange(await query.ReadNextAsync());
}

items.Dump();

最佳答案

链接的文档描述了 SQL 查询引擎上的 GROUP BY 支持,这就是为什么在门户或 SDK 中以文本形式使用 GROUP BY 运行查询的原因。

LINQ 支持是单独的,目前不支持 GroupBy(它不会转换为 SQL 查询文本)。

我已添加an Issue on GitHub这将用于跟踪其进度。

关于c# - 带有 .NET SDK 3.6 的 Azure Cosmos 抛出 LINQ 查询不支持 Group By,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60093270/

相关文章:

c# - 为什么 IDependecyResolver.Resolve<IUICompositionService>() 方法会抛出异常 'Catel.IoC.TypeNotRegisteredException' ?

c# - 指定neo4j docker容器的 bolt 端口

c# - 使用 linq 和 lambda 表达式简化传统的 foreach 嵌套循环

c# - 如何在 Form 的关闭事件中停止 BackgroundWorker?

c# - 在 Entity Framework 中更新数据库而不迁移

c# - 在字符串数组中初始化新字符串

c# - .NET字典插入的怪异性能行为

c# - 使用 XmlDocument.CreateElement() 创建具有命名空间的 XML 元素

c# - 使用 Linq/C# 选择随机图像?

c# - Linq 延迟操作