Arrays Powershell强制转换数组对象和更改数据类型

Arrays Powershell强制转换数组对象和更改数据类型,arrays,csv,powershell,Arrays,Csv,Powershell,我需要比较两个powershell字符串数组(来自导入csv)。 它们是: Array 1 / File 1 "Date","Descrption","Amount" "05/12/2016","Desc1","-40.00" "05/15/2016","Desc2","-50.00" Array 2 / File 2 "Date","Description","Amount" "5/12/2016","Desc1","-40" "5/15/2016","Desc2","-50" 如果仔

我需要比较两个powershell字符串数组(来自导入csv)。 它们是:

Array 1  / File 1
"Date","Descrption","Amount"
"05/12/2016","Desc1","-40.00"
"05/15/2016","Desc2","-50.00"

Array 2  / File 2
"Date","Description","Amount"
"5/12/2016","Desc1","-40"
"5/15/2016","Desc2","-50"
如果仔细观察,这些记录是相同的,在使用compare对象时需要匹配

那么,有没有一种方法可以将每条记录中的第一个对象强制转换为日期,将第三个对象强制转换为数字,在同一个或多个数组中

我还可以忽略在强制转换时发现的任何错误(空日期或数字)

谢谢

特别是在寻找像

 import-object file1.csv | for-each object { cast $_.Date as date, ignore errors, cast $_Amount as number, ignore errors }

听起来您想使用-as操作符将数据强制转换为对象

Import-Csv 'File1.csv' | ForEach {
    [pscustomobject]@{
        Date = $_.Date -as [datetime]
        Description = $_.Description
        Amount = $_.Amount -as [int]
    }
}
这样做的好处是,如果失败,它不会抛出错误(但不会显示数据,只是为Null)


听起来您想使用-as操作符将数据强制转换为对象

Import-Csv 'File1.csv' | ForEach {
    [pscustomobject]@{
        Date = $_.Date -as [datetime]
        Description = $_.Description
        Amount = $_.Amount -as [int]
    }
}
这样做的好处是,如果失败,它不会抛出错误(但不会显示数据,只是为Null)


好的,非常非常接近!!还有一个请求-我可以将其转换为精确到两位数的十进制数吗。问题是有些记录中有50.00条,当它们重复时,数量是50。。比较对象在比较小数时将这些视为不同。。还是这样?正在检查。好的,非常非常接近!!还有一个请求-我可以将其转换为精确到两位数的十进制数吗。问题是有些记录中有50.00条,当它们重复时,数量是50。。比较对象在比较小数时将这些视为不同。。还是这样?检查。