我正在使用C#代码在Azure CosmosDB中存储对象。应用程序启动时,这些对象的属性未完全定义,因此可能会在运行时添加或删除某些对象。这就是为什么我有一个属性"属性"类型中的Dictionary类型:
public Dictionary<string, string> Attributes { get; }
但是如何针对此属性的内容编写查询?例如,我想写一个像:
这样的查询documentQueryable
.Where(doc => doc.Attributes.ContainsKey("City") && doc.Attributes["City"] == "NY");
但是,不支持此功能:
Microsoft.Azure.Documents.Linq.DocumentQueryException: Method 'ContainsKey' is not supported., documentdb-dotnet-sdk/1.22.0 Host/32-bit MicrosoftWindowsNT/10.0.14393.0
答案 0 :(得分:2)
由于Cosmos DB是无模式的,因此您无需检查密钥是否存在。如果您将代码更改为以下代码,它应该按预期工作:
documentQueryable.Where(doc => doc.Attributes["City"] == "NY");
答案 1 :(得分:1)
以下内容应该有效,您可以在here
documentQueryable.Where(doc => doc.Attributes["City"] == "NY");