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 可提供 Clear 和 Collect 的组合功能。
ClearCollect 以表的形式返回修改后的集合。 ClearCollect 只能在行为公式中使用。
代理
与数据源一起使用时,无法委派这些函数。 将仅检索数据源的第一部分,然后应用该函数。 结果并不能代表整个过程。 创作时可能会显示一条警告,以提醒您有此限制,并建议尽可能切换到可委派的替代项。 有关详细信息,请参阅委派概述。
语法
Collect( DataSource,Item ,...)
- DataSource –必需。 要向其添加数据的数据源。 如果尚不存在,将创建一个新的集合。
- Items - 必需。 要添加到数据源的一个或多个记录或表。
Clear( 集合 )
- collection –必需。 要清除的集合。
ClearCollect( 集合, 项目...)
- collection –必需。 要清除然后向其添加数据的集合。
- Items - 必需。 要添加到数据源的一个或多个记录或表。
示例
清除并将记录添加到数据源
在以下示例中,将擦除名为 IceCream 的集合并向其进行添加。 数据源以下列内容开始:
公式 | 描述 | 结果 |
---|---|---|
ClearCollect(冰淇淋, { 口味:草莓味,数量:300 } ) | 清除 IceCream 集合中的所有数据,然后添加包含草莓冰淇淋数量的记录。 | IceCream 集合也已修改。 |
收集(冰淇淋, { 口味:开心果,数量:40 }, { 口味:橙子,数量:200 } ) | 向 IceCream 集合添加两条记录,其中包括开心果味冰淇淋和橙子味冰淇淋的数量。 | IceCream 集合也已修改。 |
Clear(IceCream) | 删除 IceCream 集合中的所有记录。 | IceCream 集合也已修改。 |
有关如何创建集合的分步示例,请参阅创建和更新集合。
记录和表
这些示例检查如何处理 Collect 和 ClearCollect 的记录和表参数。
公式 | 描述 | 结果 |
---|---|---|
ClearCollect(冰淇淋, { 口味:“巧克力”,数量:100 }, { 口味:“香草”,数量:200 } ) | 清除所有数据,然后将两条记录添加到包含一定数量的巧克力和香草冰淇淋的 IceCream 集合中。 要添加的记录作为函数的各个参数提供。 | IceCream 集合也已修改。 |
ClearCollect(IceCream,Table( { 口味:“巧克力”,数量:100 }, { 口味:“香草”,数量:200 } )) | 除将记录合并到表中并通过单个参数传递外,与前面的示例相同。 表的内容先按记录逐条提取,然后再添加到 IceCream 集合中。 | IceCream 集合也已修改。 |
ClearCollect(冰淇淋, { MyFavorites: Table( { Flavor: "Chocolate", Quantity: 100 }, { Flavor: "Vanilla", Quantity: 200 } ) } ) |
除了将表整合在记录中外,与前面的示例相同。 不会提取表的记录,而是将整个表添加为记录的一个单元。 | IceCream 集合也已修改。 |