使用cosmosdb linq提供程序,可以在嵌套的SelectMany之外链接where子句吗?

时间:2017-09-28 15:13:15

标签: azure-cosmosdb

我正在尝试编写一个如下所示的linq文档查询查询:

var query = _documentClient.CreateDocumentQuery<T>(uri, feedOptions)
            .SelectMany(queryExpression).Where(expression)
            .AsDocumentQuery();

.Where(expression)过滤器的父级(下面的客户参考)而不是那个数组元素(订单)。 .SelectMany(queryExpression)看起来像这样:

customer => customer.Orders
            .Where(c => c.OrderId == orderId) &&
                        c.ORderType == OrderType.Customer)
            .Select(d => customer);

当我查看实际的查询字符串时,它看起来像这样:

SELECT VALUE root FROM root JOIN c IN root["Orders"] WHERE (((c["OrderId"] = "635debcf-d77f-430e-90f2-ca51afc6b685") AND (c["OrderType"] = 0)) AND ( c["Age"] > 35) 

我想要的是看起来像:

SELECT VALUE root FROM root JOIN c IN root["Orders"] WHERE (((c["OrderId"] = "635debcf-d77f-430e-90f2-ca51afc6b685") AND (c["OrderType"] = 0)) AND ( root["Age"] > 35) 

所以我的问题是:有没有办法,使用linq提供程序链接一个WHERE在nestest SELECTMANY语句之外,在这种情况下过滤父文档 - root?

1 个答案:

答案 0 :(得分:1)

答案是微软的客户端被破坏了:https://github.com/Azure/azure-documentdb-dotnet/issues/208