我需要一个方法,该方法采用属性名称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)。