使用名称 属性 查询 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));
我试过了
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));