使用Id以外的属性查询DocumentDB

时间:2014-11-19 22:59:26

标签: linq azure azure-cosmosdb

我想在DocumentDB数据库中查询我的文档。我想使用LINQ来处理DocumentDB查询,并想查询facebookUsername字段。

如果我使用下面的代码查询标准Id字段,它工作正常但是当我尝试使用facebookUsername字段时,我得到一个读取的编译错误

  

"' Microsoft.Azure.Documents.Document'不包含定义   为' facebookUsername'没有扩展方法' facebookUsername'   接受第一个类型的参数   ' Microsoft.Azure.Documents.Document'可以找到(你错过了吗?   使用指令或汇编引用?)"

这是我目前用于通过ID查询的代码,这有效。我只想查询facebookUsername字段。

dynamic doc = (from f in client.CreateDocumentQuery(collection.DocumentsLink)
   where f.Id == myId.ToString()
   select f).AsEnumerable().FirstOrDefault();

如何修改我的代码以通过facebookUsername字段查询?

1 个答案:

答案 0 :(得分:5)

var families = from f in client.CreateDocumentQuery<Family>(colSelfLink)
           where f.Address.City != "NY"
           select f;

会给你一个家庭列表:{&#34;地址&#34; :{&#34; City&#34;:&#34; NY&#34;}}}

如果您没有像Family这样的对象,在我的情况下,那么您就无法使用Linq来评估动态对象的查询。然后,您需要使用SQL Query Grammar。

var families = client.CreateDocumentQuery<Family>(colSelfLink. "SELECT * FROM c WHERE field=value").AsEnumnerable();

应该有用。