Azure 是否可以基于另一个阵列筛选逻辑应用程序中的阵列?

Azure 是否可以基于另一个阵列筛选逻辑应用程序中的阵列?,azure,azure-logic-apps,Azure,Azure Logic Apps,在我正在开发的逻辑应用程序中,我希望数组a中的对象不存在数组B中的实体。阵列具有以下结构: 数组A 阵列B 除了id之外,这些数组还包含更多的属性,为了简单起见,我将省略这些属性 我想要的结果是数组A基于外部ID进行过滤,外部ID在数组B中不可用,因此这将导致以下过滤数组: 我尝试使用FilterArray操作进行此操作,但我不知道如何对此进行建模。根据,有一个@contains函数,但我无法以正确的方式构造它 可以这样做吗?在Azure Logic应用程序中是否有其他方法可以实现此结果?

在我正在开发的逻辑应用程序中,我希望数组a中的对象不存在数组B中的实体。阵列具有以下结构:

数组A

阵列B

除了id之外,这些数组还包含更多的属性,为了简单起见,我将省略这些属性

我想要的结果是数组A基于外部ID进行过滤,外部ID在数组B中不可用,因此这将导致以下过滤数组:

我尝试使用FilterArray操作进行此操作,但我不知道如何对此进行建模。根据,有一个@contains函数,但我无法以正确的方式构造它


可以这样做吗?在Azure Logic应用程序中是否有其他方法可以实现此结果?

是的,我认为目前还不可能做到这一点-获得此结果的唯一方法如下所示,但现在可能更容易在Azure函数中运行

  • 组成一个只包含“ExternalId”值的新数组(这样您就可以将它与过滤器内的@contains()一起使用)
  • 使用数组B中的每个项创建一个foreach循环
  • 在foreach循环中添加一个compose,其中包含
    {“body”:“@item()['ExternalId']”}
  • 在foreach循环之外,您现在可以执行@body('Compose'),您将拥有一个ExternalId值数组(在上面的例子中是
    [1]

    现在在数组A上创建过滤器数组,过滤器条件是@contains(body('Compose'),item())


    将来,我们计划支持@select()@where()@orderby()类型构造,这将使这一点变得更容易,还将支持映射数组操作,但仍在设计中。现在,您可以选择上面的方法或调用Azure函数来处理javascript/C#

    我已经在期待这个答案,但不完全确定是否可以通过filterArray实现。在这种情况下,@select()方法应该可以节省大量时间。
    [{"ExternalId": 1}, {"ExternalId": 2}]
    
    [{"Id": 2}]
    
    [{"ExternalId": 1}]