gpt4 book ai didi

wcf - oData WCF 数据服务过滤器子集合

转载 作者:行者123 更新时间:2023-12-02 15:31:19 24 4
gpt4 key购买 nike

我有很多客户,每个客户都有一组订单。

下面的查询返回客户及其订单,并按预期工作:

~Customers?$expand=Orders

现在我想获取现有客户,但按 Order.Amount > 100 过滤他们的订单(我很高兴列表中没有此类订单的客户),

当我尝试以下操作时:

~Customers?$expand=Orders&$filter=Orders/Amount gt 100

我收到以下错误:

The 'Amount' is not allowed at position ***. Member access or specifying a type identifier on a resource set reference is not allowed.

我可以循环浏览客户并调用

~Customers('Blah')/Orders?$filter=Amount gt 100 

这可行,但我真的很想一次性完成。

您能否建议我如何实现这一目标?

最佳答案

这里有两件事导致了问题。首先,听起来您想要过滤 Orders 集合,而不是 Customers 集合(即,您总是希望返回所有 Customers,但您只希望扩展某些 Orders)。当您的 URI 类似于 EntitySet?$filter=<some predicate> 时,过滤器始终适用于 EntitySet ,在您的情况下是 Customers (这不是你想要的)。

二、原因~Customers?$expand=Orders&$filter=Orders/Amount gt 100甚至没有正确过滤客户是因为 Orders是实体的集合,而不是单个实体。 Orders/Amount如果您将 Orders 视为列表,则没有意义,只有 Order/Amount做。如果您想要一个过滤器,仅返回至少有一个订单的客户,其中 Order/Amount大于 100,您可以使用 any关键字:

~Customers?$expand=Orders&$filter=Orders/any(o: o/Amount ge 100)

但同样,这会过滤客户,而不是订单。

鉴于您想要实际过滤订单,以下内容对您有用吗?

~Orders?$expand=Customer&$filter=Amount gt 100

关于wcf - oData WCF 数据服务过滤器子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16961907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com