根据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/