【发布时间】:2015-09-22 08:43:16
【问题描述】:
我在 PowerShell 中创建了一个 List<string>,并希望使用带有以下代码的脚本块对该列表进行排序:
$AssemblyNames = New-Object "System.Collections.Generic.List[string]"
$AssemblyNames.Add("PersonService.BizTalk.dll")
$AssemblyNames.Add("PersonService.BizTalk.Schemas.dll")
$SortedAssemblyNames = $AssemblyNames | Sort-Object { if ($_.ToLower().Contains("schema")) { 0 } else { 1 } }
$SortedAssemblyNames
哪个输出:
PersonService.BizTalk.Schemas.dll
PersonService.BizTalk.dll
一切都好,但我想稍后在处理这些元素时删除一些元素:
$SortedAssemblyNames.Remove($SortedAssemblyNames.Item($i))
这会产生错误
使用“1”个参数调用“删除”的异常:“集合大小固定。
所以我检查了$SortedAssemblyNames 变量的类型,我得到了System.Object[]。正如Sort-Object 文档所述,这很奇怪:
输出
输出类型是 cmdlet 的对象的类型 发射。
在我看来,这应该是System.String[]。我错了还是有办法指定Sort-Object cmdlet 的输出类型?
我目前的解决方法是遍历这个集合并将其添加到新的List<string>,但我认为应该有更好的解决方案,因为我需要稍后修改集合并且数组很痛苦。
【问题讨论】:
标签: sorting powershell