如何在 Powerapps 中同时使用 collect 和 if 函数?

How do I use collect and if functions together in Powerapps?

下面是我尝试过的示例 canvas-app 函数,但是我想转换以下可以访问集合数据的 canvas-app 函数来使用它:

If("EC - Empire Complex" in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "1" in buildingID), storey), If("BTB - Brani Terminal Building" in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "2" in buildingID), storey), If("KW - Keppel Workshop" in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "3" in buildingID),storey), If("CSO - Container Side Office"in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "4" in buildingID), storey), If("Others" in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "5" in buildingID), storey))))))

如何转换上述 canvas-app 函数,使其可以同时使用 collect 函数和 if 函数?谢谢

好吧,如果在 Powerapps 中有单独的语法可以使用,即 if (condition = true, "do this", "else do this")。如果您希望在 if 内发生多个操作,那么您的语法将变为 if(condition = true, "do this";"do this also";"do this also", "else do this";"else do this also" ).

如果很容易,您可以拥有收集功能。

这是一个有效的(希望是不言自明的)示例,用于在 Power App 集合中选择和取消选择记录=>

If( LookUp(Sammlung3; ID=ThisItem.ID).ID >0; 
          RemoveIf(Sammlung3; ID=ThisItem.ID); 
    Collect(Sammlung3;ThisItem)
  )

如果在集合中找到记录则将其移除,否则将其放入集合

不清楚您想在哪里使用 PowerApps 收集功能。请详细说明。

也不清楚"Area"是什么。它是 Collection 还是 Excel table 还是 Sharepoint 列表还是 SQL table?

在您的 PowerApps 代码中选择一个命名约定并始终如一地使用它。

示例:

  • 在您的代码中为所有 Collection 加上前缀 col
    • colArea
  • 使所有数据tables(Sharepoint、SQL等)全部CAPITALS_WITH_UNDERSCORES
    • MY_SHAREPOINT_LIST

那么,at-a-glance,你就可以看出是什么类型的数据源了。

您还可以通过删除嵌套的 If's:

来简化您的代码
If(
    "EC - Empire Complex" in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(Area, "1" in buildingID), 
            storey
        ), 
    "BTB - Brani Terminal Building" in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(Area, "2" in buildingID), 
            storey
        ), 
    "KW - Keppel Workshop" in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(Area, "3" in buildingID),
            storey
        ), 
    "CSO - Container Side Office"in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(Area, "4" in buildingID), 
            storey
        ), 
    "Others" in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(
                Area, "5" in buildingID), 
            storey
        )
)

也要牢记 Switch()(尽管在这里用处不大)。

如果有分支逻辑,通常使用嵌套 If,但不用于多项选择。