我试图找到一个解决方案来过滤我的数组。
对于标准,它将是:如果第三列的对象与同一列的另一个对象匹配(或包含)。那就删了它
下面是一个$data的例子:
By Mode File
-- ---- ----
user1 Read creation\1. ABC
user1 Read creation\1. ABC\Invoice
user1 Read creation\1. ABC\LIMITED
user2 Read edition\File
user2 Read edition\File\DATA SHEETS
user2 Read BCD
user2 Read BCD\DATA
user3 Read BCD
我想删除具有相同开头的对象,只保留具有最多字符的对象。但是,如果不是同一用户,则不应过滤该行。
我在寻找的结果是:
By Mode File
-- ---- ----
user1 Read creation\1. ABC\Invoice
user1 Read creation\1. ABC\LIMITED
user2 Read edition\File\DATA SHEETS
user2 Read BCD\DATA
user3 Read BCD
我尝试的是:
foreach($elem in $data.file)
{
$data.file.Where({$_.contains($elem)}, 'First',3)
}
我卡住了,谢谢你的评论
1条答案
按热度按时间n6lpvg4x1#
根据这些有用的注解,我相信这就是你要找的,假设我们将示例输入存储在一个名为CSV的变量中:
我们可以使用
Group-Object
、Sort-Object
和String.StartsWith
的组合:从这个例子中产生的输出将是: