Collect、Clear 和 ClearCollect 函数

创建和清除集合,以及将记录添加到任意数据源

Collect

适用于:画布应用卡片 Dataverse 低代码插件 Power Platform CLI

Collect 函数将记录添加到数据源。 可添加的项包括:

  • 单个值:该值置于新记录的 Value 字段中。 所有其他属性保留为 blank
  • 记录:每个命名属性都置于新记录的对应属性中。 所有其他属性保留为空白。
  • :如上所述,表中的每条记录将作为数据源的单个记录添加。 表不是以嵌套表形式添加到记录。 为实现此目的,需首先将表整合到记录中。

当用于集合时,将根据需要创建额外的。 该数据源将固定其他数据源的列,且无法添加新列。

如果数据源尚不存在,则会创建一个集合。

集合有时可用于保留全局变量或作为数据源的临时副本。 画布应用以公式为基础,这些公式会在用户与应用交互时自动重新计算。 集合不具有此优势,并且使用这些集合可能会让应用更加难以进行创建和理解。 以此方式使用集合前,请查看使用变量

还可使用 Patch 函数在数据源中创建记录。

Collect 以表格形式返回修改后的数据源。 Collect 只能在行为公式中使用。

Clear

适用于:画布应用

Clear 函数删除集合的所有记录。 集合的列将保留。

请注意,Clear 仅对集合执行运算,而不包括其他数据源。 鉴于此,可以使用 RemoveIf( DataSource, true )。 此函数将删除数据源存储中的所有记录并影响其他用户,请谨慎使用。

可使用 Remove 函数选择性地删除记录。

Clear 没有返回值。 只能在行为公式中使用。

ClearCollect

适用于:画布应用模型驱动应用

ClearCollect 函数删除集合中的所有记录。 然后将不同的记录集添加到同一集合。 单个函数 ClearCollect 可提供 ClearCollect 的组合功能。

ClearCollect 以表形式返回修改后的集合。 ClearCollect 只能在行为公式中使用。

代理

与数据源一起使用时,无法委派这些函数。 将仅检索数据源的第一部分,然后应用该函数。 结果并不能代表整个过程。 创作时可能会显示一条警告,以提醒您有此限制,并建议尽可能切换到可委派的替代项。 有关详细信息,请参阅委派概述

语法

Collect( DataSource, Item, ... )

  • DataSource – 必需。 要向其添加数据的数据源。 如果尚不存在,将创建一个新的集合。
  • Item(s) - 必需。 要添加到数据源的一个或多个记录或表。

Clear( Collection )

  • Collection – 必需。 要清除的集合。

ClearCollect( Collection, Item, ... )

  • Collection – 必需。 要清除然后向其添加数据的集合。
  • Item(s) - 必需。 要添加到数据源的一个或多个记录或表。

示例

清除并将记录添加到数据源

在以下示例中,将擦除名为 IceCream 的集合并向其进行添加。 数据源以下列内容开始:

示例数据源。

公式 描述 结果
ClearCollect( IceCream, { Flavor: "Strawberry", Quantity: 300 } ) 清除 IceCream 集合中的所有数据,然后添加包含草莓冰淇淋数量的记录。 包含一个记录的表。

IceCream 集合也已修改。
Collect( IceCream, { Flavor: "Pistachio", Quantity: 40 }, { Flavor: "Orange", Quantity: 200 } ) IceCream 集合添加两条记录,其中包括开心果味冰淇淋和橙子味冰淇淋的数量。 包含两个记录的表。

IceCream 集合也已修改。
Clear( IceCream ) 删除 IceCream 集合中的所有记录。 空表。

IceCream 集合也已修改。

有关如何创建集合的分步示例,请参阅创建和更新集合

记录和表

这些示例检查如何处理 CollectClearCollect 的记录和表参数。

公式 描述 结果
ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100 }, { Flavor: "Vanilla", Quantity: 200 } ) 清除所有数据,然后将两条记录添加到包含一定数量的巧克力和香草冰淇淋的 IceCream 集合中。 要添加的记录作为函数的各个参数提供。 添加到集合的巧克力和香草记录。

IceCream 集合也已修改。
ClearCollect( IceCream, Table( { Flavor: "Chocolate", Quantity: 100 }, { Flavor: "Vanilla", Quantity: 200 } ) ) 除将记录合并到表中并通过单个参数传递外,与前面的示例相同。 表的内容先按记录逐条提取,然后再添加到 IceCream 集合中。 Chocolate 和 Vanilla 记录添加到集合中并进行了修改。

IceCream 集合也已修改。
ClearCollect( IceCream,
{ MyFavorites: Table( { Flavor: "Chocolate", Quantity: 100 }, { Flavor: "Vanilla", Quantity: 200 } ) } )
除了将表整合在记录中外,与前面的示例相同。 不会提取表的记录,而是将整个表添加为记录的一个单元。 Chocolate 和 Vanilla 记录添加到集合中,使用在记录中打包的表进行了修改。

IceCream 集合也已修改。