list - List.Sort by PowerQuery (M) 中的子字符串
问题描述
我有一个要排序的字符串列表:
列表
- F20
- S20
- S21
- F21
我希望我的排序结果如下:首先是 2 位数字,然后是 1 个字符的字母。但是,我无法为排序创建静态顺序,因为字符串会随着时间的推移而更新/更改:
列表
S20
F20
S21
F21
PowerQuery MI 中是否有 List.Sort 语法/属性可用于按列表中的子字符串进行排序?如果没有,是否有任何优雅的方法可以在没有静态列表顺序的情况下完成此操作?
解决方案
您需要定义一个自定义比较器并将其作为第二个参数传递给 List.Sort。这是代码,假设每个项目只有1 个字母
let
list = {"F20", "S20", "S21", "F21"},
transform = (value) => Text.Range(value, 1) & Text.Range(value, 0, 1)
in
List.Sort(list, (a, b) => Value.Compare(transform(a), transform(b)))
结果 F20 S20 F21 S21
推荐阅读
- javascript - 修改 YouTube iframe API 脚本以使用 iframe 嵌入
- makefile - 有一个 *-config 二进制文件来输出安装路径是否正常?
- c# - 打开后表格崩溃
- php - php $value 作为数组学习
- c# - Automapper中参数的条件映射
- java - 如何在分隔字符串中用零替换空条目
- solr - 在查询中按单词顺序对文档进行排序
- azure-durable-functions - 你在编排方法中在哪里做 CallActivityAsync
- c++ - C++ 在 Trie 中实现节点计数
- ansible - 如何在多个字段上使用 with_items 从 ansible k8s 模块中检索/解析结果