【发布时间】:2021-12-17 05:51:05
【问题描述】:
尝试导入具有 ID、开始日期、结束日期列的 CSV,其中每行可以包含相同的 ID 值但不同的日期。
想要对此进行排序,以便找到每个 ID 的最早日期和同一 ID 的最新结束日期,然后将其写入 CSV。
输入 csv:
| ID | Start Date | End Date |
|---|---|---|
| 100 | 01-Apr-2021 | 23-May-2021 |
| 100 | 10-June-2021 | 30-Dec-2021 |
| 200 | 12-Aug-2021 | 23-Sep-2021 |
| 200 | 25-Dec-2021 | 24-May-2022 |
输出 csv:
| ID | Start Date | End Date |
|---|---|---|
| 100 | 01-Apr-2021 | 30-Dec-2021 |
| 200 | 12-Aug-2021 | 24-May-2022 |
我以为我可以导入 CSV,然后识别 ID,然后为每个 ID 排序开始和结束日期,但似乎无法正常工作。
到目前为止的代码:
$source = "C:\test\test.csv"
$outPut = "C:\test\Testsort.csv"
$csv = Import-Csv $source
Foreach ($usr in $csv){
$userID= $usr."ID"
$filtered = $csv | Where-Object {($_.'ID') -eq $userID}
$output = [pscustomobject]@{
'ID' = $userID
'Start Date' =($filtered.'Start Date' | Sort-Object @{Expression=
{[datetime]($_."Start Date")};Descending=$false} | Select -First 1
'End Date' =($filtered.'Start Date' | Sort-Object @{Expression=
{[datetime]($_."End Date")};Descending=$True} | Select -Last 1
}
}
$output | Export-csv $outPut
遗憾的是,我正在为每个 ID 的开始日期和结束日期排序以及为每个 ID 设置最早和最旧的值而苦苦挣扎。
有什么想法吗?
【问题讨论】:
标签: arrays powershell sorting