Power Apps中Sort与SortByColumns函数排序失败求助
Power Apps集合排序报错:“无法对表达式类型排序”排查方案
问题背景
作为Power Apps新手,尝试对集合Var_AcctList排序时,系统始终提示“无法对表达式类型排序”。该集合通过Flow从Power BI查询SQL数据库获取,包含Role、SiteName等列。尝试过带AddColumns的复杂SortByColumns代码,以及最简写法SortByColumns(var_AcctList,"SiteName"),代码放在应用OnStart或屏幕标签中均未成功。
原代码示例
ClearCollect( var_AcctList, ForAll( Table(ParseJSON(SourceList.Run().acctarry)), { SiteName: Value.'Accts[SiteName]', Role: Value.'Accts[RoleName]', LoginName: Value.Accts[LoginName]', FirstName: Value.'Accts[FirstName]', LastName: Value.'Accts[LastName]', Email: Value.'Accts[EmailAddress1]' } ) ); ClearCollect( sortAcctsList, SortByColumns( AddColumns( Filter( var_AcctList, Role="buyer" ), "sortSiteName",SiteName ), "sortSiteName" ) );
简化写法
SortByColumns(var_AcctList,"SiteName")
排查与解决步骤
- 修正语法错误:原代码中
LoginName: Value.Accts[LoginName]',多了一个单引号,会导致集合生成异常,先修正该语法问题,确保var_AcctList能正确创建。 - 显式指定字段类型:ParseJSON返回的是无类型对象,
Value()转换可能无法完全识别字段类型,需显式用Text()或Value()(数值字段)指定类型,确保集合列类型统一:ClearCollect( var_AcctList, ForAll( Table(ParseJSON(SourceList.Run().acctarry)), { SiteName: Text(Value.'Accts[SiteName]'), Role: Text(Value.'Accts[RoleName]'), LoginName: Text(Value.'Accts[LoginName]'), FirstName: Text(Value.'Accts[FirstName]'), LastName: Text(Value.'Accts[LastName]'), Email: Text(Value.'Accts[EmailAddress1]') } ) ); - 改用Sort函数:若SortByColumns仍报错,尝试用Sort函数直接指定排序逻辑,明确排序顺序:
ClearCollect( sortAcctsList, Sort( Filter(var_AcctList, Role="buyer"), SiteName, SortOrder.Ascending ) ); - 验证集合完整性:运行应用后,通过「文件>集合」查看
var_AcctList的内容,确认列和数据正常加载,无空值或异常类型数据。 - 调整代码执行时机:若数据量较大,OnStart事件中加载集合可能导致类型识别延迟,可将集合加载逻辑移至屏幕的OnVisible事件,确保数据完全加载后再执行排序。
内容的提问来源于stack exchange,提问作者KYLO
相关产品推荐
相关产品推荐

