如何创建仅包含选定属性的Cosmos DB IQueryable?

时间:2019-01-22 13:26:46

标签: c# azure-cosmosdb azure-cosmosdb-sqlapi

我需要一个方法,该方法采用属性名称properties的数组,并返回一个IQueryable文档查询query,其中对象仅包含这些属性。 IQueryable应该可用于进一步的LINQ样式链接,例如与.Where(...)

尝试1

string sql = $"SELECT {string.Join(",", properties.Select(x => $"c['{x}']"))} FROM c";
IQueryable<MyType> query = DocumentClient.CreateDocumentQuery<MyType>(CollectionUri, sql);

这不起作用,因为当我尝试将.Where(x => x.ObjectType == "user")链接到query时,会引发以下异常(即使properties包含构造{{ 1}}):

MyType

尝试2

我尝试改用System.ArgumentException: 'Expression of type 'System.Linq.IQueryable`1[System.Object]' cannot be used for parameter of type 'System.Linq.IQueryable`1[MyType]' of method 'System.Linq.IQueryable`1[MyType] Where[MyType](System.Linq.IQueryable`1[MyType], System.Linq.Expressions.Expression`1[System.Func`2[MyType,System.Boolean]])''

dynamic

这也不起作用:当我尝试将string sql = $"SELECT {string.Join(",", properties.Select(x => $"c['{x}']"))} FROM c"; IQueryable<dynamic> query = DocumentClient.CreateDocumentQuery(CollectionUri, sql); 链接到.Where(x => x["objectType"] == "user")上时,代码甚至无法编译:

query

做什么?

我正在.NET Standard 2.0上使用Microsoft.Azure.DocumentDB.Core(2.2.1)。

0 个答案:

没有答案