【发布时间】:2015-01-17 16:02:49
【问题描述】:
我想在我的 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 字段查询?
【问题讨论】:
-
尝试更改它以返回
IOrderedQueryable<dynamic>...from f in client.CreateDocumentQuery<dynamic>(collection.DocumentsLink) -
我以前从未使用过 IOrderedQueryable。您能否详细说明它是什么以及为什么它可以解决我的问题?我真的很感谢你的帮助。谢谢!
-
我真正的意思是尝试将
client.CreateDocumentQuery(collection.DocumentsLink)更改为client.CreateDocumentQuery<dynamic>(collection.DocumentsLink)。没有它,您将处理不具有动态属性的Documents 的可查询。 -
我明白了。我将代码更改为: dynamic doc = (from f in client.CreateDocumentQuery
(collection.DocumentsLink) where f.facebookUsername == myId.ToString() select f).AsEnumerable().FirstOrDefault();但我现在收到此错误:“表达式树可能不包含动态操作” -
在这种情况下,您是否有一个表示 doc db 集合中的项目的类(例如,包含
facebookUsername属性的类)?例如,如果你有一个名为User的类,你应该可以使用client.CreateDocumentQuery<User>(collection.DocumentsLink)
标签: linq azure azure-cosmosdb