Remove 和 RemoveIf 函数

适用于:画布应用模型驱动应用 Power Platform CLI

数据源删除记录

备注

PAC CLI pac power-fx 命令不支持 RemoveIf 函数。

Description

Remove 函数

使用 Remove 函数从数据源中删除特定的一个或多个记录。

对于集合来说,整个记录必须匹配。 可使用 RemoveFlags.All 参数删除记录的所有副本,否则仅删除记录的一个副本。

RemoveIf 函数

使用 RemoveIf 函数根据一个或一组条件删除一个或多个记录。 每个条件都可以是其结果为 truefalse 的任意公式,并且可以通过名称引用数据源的。 将会针对每个记录单独评估每个条件,如果所有条件的评估结果为 true,则会删除该记录。

RemoveRemoveIf 都以的形式返回修改的数据源。 只能在行为公式中使用这两个函数。

还可使用 Clear 函数删除集合中的所有记录。

代理

与数据源一起使用时,无法委派这些函数。 将仅检索数据源的第一部分,然后应用该函数。 这并不能代表整个过程。 创作时可能会出现警告,以提醒您存在此限制。

委派支持(试验)

委派支持 RemoveIf 现在位于支持 RemoveIf 的数据源的试验预览(默认关闭)中。 如果某个数据源不支持此功能,Power Apps 将向服务器发送查询,并检索与筛选表达式匹配的所有数据,最多为 500、2000 或数据页大小。 然后,对其中每个记录执行删除操作,对服务器进行单独调用。

语法

Remove( DataSource, Record1 [, Record2, ... ] [, RemoveFlags.All ] )

  • DataSource – 必需。 数据源,其中包含要删除的一个或多个记录。
  • Record(s) – 必需。 要删除的一个或多个记录。
  • RemoveFlags.All – 可选。 在集合中,同一记录可能出现多次。 可添加 RemoveFlags.All 参数以删除记录的所有副本。

Remove( DataSource, Table [, RemoveFlags.All ] )

  • DataSource – 必需。 数据源,其中包含要删除的记录。
  • Table – 必需。 要删除的记录表。
  • RemoveFlags.All – 可选。 在集合中,同一记录可能出现多次。 可添加 RemoveFlags.All 参数以删除记录的所有副本。

RemoveIf( DataSource, Condition [, ... ] )

  • DataSource – 必需。 数据源,其中包含要删除的一个或多个记录。
  • Condition(s) – 必需。 一个公式,对于要删除的一个或多个记录,该公式的求值结果为 true。 可以在公式中使用 DataSource 中的列名。 如果指定多个 Conditions,则所有 Conditions 的求值结果都必须为 true,然后才能删除一个或多个记录。

示例 - 单个公式

在以下示例中,您将删除某个数据源中的一个或多个记录,该数据源名为 IceCream 且以下表中的数据开头:

IceCream 示例。

创建包含示例记录的集合

若要使用此数据创建集合,请执行下列操作:

  1. 插入 Button 控件。

  2. 将 Button 控件的 OnSelect 属性设置为以下公式:

    ClearCollect( IceCream,
                  { ID: 1, Flavor: "Chocolate",  Quantity: 100 },
                  { ID: 2, Flavor: "Vanilla",    Quantity: 200 },
                  { ID: 3, Flavor: "Strawberry", Quantity: 300 }
    )
    
  3. 按住 Alt 键,并选择此按钮:

使用公式从集合中删除示例记录

公式 说明 结果
Remove( IceCream,
LookUp( IceCream, Flavor="Chocolate" ))
从数据源中删除 Chocolate 记录。 包含 Vanilla 和 Strawberry 的结果。

修改了 IceCream 数据源。
Remove( IceCream,
LookUp( IceCream, Flavor="Chocolate" ), LookUp( IceCream, Flavor="Strawberry" ) )
从数据源中删除两个记录。 仅包含 Vanilla 的结果。

修改了 IceCream 数据源。
RemoveIf( IceCream, Quantity > 150 ) 删除其 Quantity 大于 150 的记录。 仅包含 Chocolate 的结果。

修改了 IceCream 数据源。
RemoveIf( IceCream, Quantity > 150, Left( Flavor, 1 ) = "S" ) 删除其 Quantity 大于 150 且 FlavorS 开头的记录。 包含 Chocolate 和 Vanilla 的结果。


修改了 IceCream 数据源。
RemoveIf( IceCream, true ) 从数据源中删除所有记录。 不包含 IceCream 的结果。

修改了 IceCream 数据源。

在此示例中,您将使用 Gallery 控件 列出表中的记录。 然后使用 Remove 函数有选择地删除项。

准备示例数据

此示例使用 Microsoft Dataverse 中随示例应用和数据提供的联系人表。 当您创建环境时,可以部署示例应用和数据。 您也可以改用任何其他数据源。

在此示例中,您将使用库外部的按钮删除项。

  1. 使用“手机布局”创建一个新的空白画布应用

    使用“手机布局”的空白画布应用。

  2. 从左侧窗格中选择插入

  3. 选择垂直库
    Gallery 控件将添加到屏幕上。

    使用“插入工具”窗格添加垂直库控件。

  4. 系统将提示您选择一个数据源,您可以从可用数据源中选择一个数据源。
    例如,选择联系人表来使用示例数据

    选择要在库中显示的联系人表。

    库显示此表中的项目:

    添加的库显示联系人表。

  5. 从左窗格插入 Button 控件:

    使用“插入工具”窗格添加 Button 控件。

  6. 将所添加的按钮移到库项下面:

    移动按钮。

  7. 更新按钮文本属性以删除记录。 您还可以使用您选择的文本:

    重命名按钮。

  8. 将此 Button 控件的 OnSelect 属性设置为以下公式:

    Remove( Contacts, Gallery1.Selected )
    

    设置 Button 控件的 OnSelect 属性。

    Gallery 控件使用 Selected 属性使当前选择的记录可用。 Remove 函数引用此选定记录以将其删除。

  9. 使用右上角的播放按钮或按键盘上的 F5 预览应用:

    预览应用。

  10. 选择要删除的记录,例如本例中的 Nancy 的记录:

    选择一条记录。

  11. 选择删除记录

    联系人库,现在没有已删除的 Nancy 记录。

    选择此按钮将删除所选记录(在本示例中为 Nancy 的记录)。

  12. 关闭应用预览。

    提示

    您还可以结合使用替代行为与 Alt 键,而不是通过播放按钮或 F5 使用应用预览。

在此示例中,您将使用放置在库中的图标删除项。

创建包含示例数据的集合

如果您已准备好示例数据,请跳过此步骤,移至库内的垃圾桶图标

  1. 向屏幕添加 Button 控件。

  2. OnSelect 属性设置为以下公式:

    ClearCollect( SampleContacts,
          { 'Full Name': "Yvonne McKay (sample)",      'Primary Email': "someone_a@example.com" },
          { 'Full Name': "Susanna Stubberod (sample)", 'Primary Email': "someone_b@example.com" },
          { 'Full Name': "Nancy Anderson (sample)",    'Primary Email': "someone_c@example.com" },
          { 'Full Name': "Maria Campbell (sample)",    'Primary Email': "someone_d@example.com" },
          { 'Full Name': "Robert Lyon (sample)",       'Primary Email': "someone_e@example.com" },
          { 'Full Name': "Paul Cannon (sample)",       'Primary Email': "someone_f@example.com" },
          { 'Full Name': "Rene Valdes (sample)",       'Primary Email': "someone_g@example.com" }
    )
    
  3. 按住 Alt 键,并选择此按钮。

您可以在以下示例中使用的示例集合已创建。

  1. 使用“手机布局”创建一个新的空白画布应用

    使用“手机布局”的空白画布应用。

  2. 从左侧窗格中选择插入

  3. 选择垂直库
    Gallery 控件将添加到屏幕上。

    使用“插入工具”窗格添加垂直库控件。

  4. 系统将提示您选择一个数据源,您可以从可用数据源中选择一个数据源。
    例如,选择联系人表来使用示例数据

    选择要在库中显示的联系人表。

    如果已创建集合,请选择您的集合:

    示例联系人集合。

  5. 选择库中顶部项内的控件。

    为确保下一步将项插入库的模板中而不是库外,请确保在进行下一步之前先执行此步骤。

    选择库中的顶部记录。

  6. 从左侧窗格中选择添加图标

    使用“插入工具”窗格添加图标控件。

    备注

    添加图标将在库左侧插入一个 + 图标,库中的每个项都将重复插入。

  7. 在顶部项中,将图标移到屏幕右侧。

    移动图标。

  8. 选择图标的 Icon 属性并将其设置为以下公式,以将图标图像更新为垃圾桶图标:

    Icon.Trash
    

    备注

    Icon. 前缀仅在您主动编辑公式时显示。

    将图标更改为垃圾桶图标。

  9. OnSelect 属性设置为以下公式:

    Remove( [@Contacts], ThisItem )
    

    备注

    您必须将此示例中的全局消除歧义运算符[@...] 与使用联系人表的示例数据一起使用,以避免与一对多关系冲突。 如果您使用诸如列表或 SQL Server 表之类的数据源,则不需要使用全局消除歧义运算符

    垃圾桶图标的 OnSelect。

  10. 使用右上角的播放按钮或按键盘上的 F5 预览应用。

  11. 选择记录旁边的垃圾桶图标,例如,Maria 的记录:

    其中一个联系人已删除的库。

    记录已删除:

    删除的记录。

  12. 关闭应用预览。