如何在 Dynamics NAV WebService 中应用 Entity_Filter 作为 OR

How to apply Entity_Filter as OR in Dynamics NAV WebService

我正在使用 Dynamics NAV 2009 WebService (SOAPish)。具体我说的是ReadMultiple方法MSDNA

filterArray 采用 Entity_Filter 对象数组。每个 Entity_Filter 都有一个 FieldCriteria 属性.

现在我想知道如何将过滤器应用为 OR not and。

例如,我要传递两个过滤器:

Entity_Filter { Field: "Name", Criteria: "*banana*" }
Entity Filter { Field: "Color", Criteria: "yellow"}

如果我将它发送到 ReadMultiple,我会得到所有具有 "banana" 作为名称一部分的条目 并且 颜色为黄色。我必须做什么,才能获得名称中包含 "banana" 的所有条目 颜色为黄色?

遗憾的是,无法对记录应用 'OR' 过滤器。 ReadMultiple 方法应用过滤器的方式与 C/AL 方法 SETFILTER 或 SETRANGE 相同。它必须在两个单独的请求中完成。

转念一想,您可以在单个请求中完成,但要使用使用 Linq 的 OData 服务:

NAV nav = new NAV(new Uri("http://ServerName:Port/DynamicsNAV71/OData/Company('Your Company Name')"));
nav.Credentials = CredentialCache.DefaultCredentials;
var items = from i in nav.ItemsList where i.Name.Equals("Banana") || i.Color.Equals("Yellow") select i;

其中 'ItemsList' 是 'Page'

类型的 OData Web 服务