是否可以根据另一个数组在逻辑应用程序中过滤一个数组?
Is it possible to filter an array in Logic apps based on another array?
在我正在开发的逻辑应用程序中,我希望数组 A 中的对象不存在数组 B 中的实体。数组具有以下结构:
数组A
[{"ExternalId": 1}, {"ExternalId": 2}]
数组B
[{"Id": 2}]
除了 id 之外,这些数组还包含更多属性,为简单起见,我将保留这些属性。
我想要的结果是根据数组 B 中不可用的 ExternalId 对数组 A 进行过滤,因此这应该会产生以下过滤后的数组:
[{"ExternalId": 1}]
我尝试为此使用 FilterArray 操作,但我不知道如何对其建模。根据 Workflow Definition Language 有一个 @contains 函数,但我无法以正确的方式构造它。
这样可以吗?有没有其他方法可以在 Azure 逻辑应用程序中实现此结果?
是的,我认为这还不可能 - 获得它的唯一方法如下,但现在 运行 在 Azure Functions 中可能更容易。
- 组成一个只有 "ExternalId" 值的新数组(这样你就可以在过滤器中使用 @contains() )
- 为数组 B 中的每一项创建一个 foreach 循环
- 在 foreach 循环中添加一个包含
{ "body": "@item()['ExternalId']" }
的组合
在 foreach 循环之外,您现在可以执行 @body('Compose') 并且您将拥有一个 ExternalId 值数组(在上述示例中为 [ 1 ]
)。
现在在数组A上创建过滤数组,过滤条件为where @contains(body('Compose'), item())
将来我们计划支持 @select() @where() @orderby() 类型构造,这将使这更容易,以及映射数组操作 - 但仍在设计中。现在你可以选择上面的方法或调用 Azure 函数来处理 javascript/C#
在我正在开发的逻辑应用程序中,我希望数组 A 中的对象不存在数组 B 中的实体。数组具有以下结构:
数组A
[{"ExternalId": 1}, {"ExternalId": 2}]
数组B
[{"Id": 2}]
除了 id 之外,这些数组还包含更多属性,为简单起见,我将保留这些属性。
我想要的结果是根据数组 B 中不可用的 ExternalId 对数组 A 进行过滤,因此这应该会产生以下过滤后的数组:
[{"ExternalId": 1}]
我尝试为此使用 FilterArray 操作,但我不知道如何对其建模。根据 Workflow Definition Language 有一个 @contains 函数,但我无法以正确的方式构造它。
这样可以吗?有没有其他方法可以在 Azure 逻辑应用程序中实现此结果?
是的,我认为这还不可能 - 获得它的唯一方法如下,但现在 运行 在 Azure Functions 中可能更容易。
- 组成一个只有 "ExternalId" 值的新数组(这样你就可以在过滤器中使用 @contains() )
- 为数组 B 中的每一项创建一个 foreach 循环
- 在 foreach 循环中添加一个包含
{ "body": "@item()['ExternalId']" }
的组合
在 foreach 循环之外,您现在可以执行 @body('Compose') 并且您将拥有一个 ExternalId 值数组(在上述示例中为 [ 1 ]
)。
现在在数组A上创建过滤数组,过滤条件为where @contains(body('Compose'), item())
将来我们计划支持 @select() @where() @orderby() 类型构造,这将使这更容易,以及映射数组操作 - 但仍在设计中。现在你可以选择上面的方法或调用 Azure 函数来处理 javascript/C#