使用名称 属性 查询 DocumentDB

Querying DocumentDB using a propery by its name

我试过了

CreateDocumentQuery<Document>(this.collection.DocumentsLink)
.Where(doc => doc.GetPropertyValue<string>(CollectionNameProperty) == collectionName)

但是它说不支持 GetPropertyValue。

我没有文档的 POCO 类型,因为架构是动态的。 DocumentDB SQL 是我唯一的选择吗?

SQL 是最佳选择,因为 LINQ 需要类型绑定。

您也可以使用 Dictionary 类型进行查询,然后转换为 Document(通过读取为 ExpandoObject,或使用 JsonConvert 进行转换)。但是 SQL 会比较干净:

var query = client.CreateDocumentQuery<Dictionary<string, object>>(collectionLink)
.Where(c => (string)c[propertyName] == propertyValue);

Dictionary<string, object> documentAsDictionary = query.AsEnumerable().FirstOrDefault();
Document document = JsonConvert.DeserializeObject<Document>(
    JsonConvert.SerializeObject(documentAsDictionary));