我有一个从下面的sql查询中检索到的表
Id Date-Time FilesA FilesB
556 2020-10-13 21:12:04 temp1.txt fels.csv
133 2020-09-08 03:22:16 NA temp2.txt
556 2020-10-13 22:02:44 temp1.txt fels.csv
203 2021-08-03 03:22:16 macs.xml temp2.txt
我正在拔出FilesA和FilesB列,并为Id列的所有Id做一些操作。但是在Id列中有一些重复,我需要只对基于日期-时间列的最新Id执行操作,例如556,我需要使用第三行的FilesA和FilesB,因为它是最新生成的,即22:02。我可以有不同id的多个副本,像这样。我如何实现与powershell脚本?所有我发现识别重复是使用csv这似乎没有帮助,因为我不需要csv和时间日期列是否有任何东西像转换检索列数据到日期时间对象,然后比较?我迷路了。
$SqlAdapter.SelectCommand = $SqlCmd
$Dataset = New-Object System.Data.Dataset
$SqlAdapter.Fill($Dataset)
$DataSet.Tables[0]
$data1=$DataSet.Tables[0]
$data1.FilesA #some operations
#need to perfrom the actions on all ids and for duplicates only on the latest ones
使用Group-Object
按Id
分组,然后从Sort-Object -Descending |Select -First
组中选择具有最新日期的行:
$newestRowPerId = $data1 |Group-Object Id |ForEach-Object {
$_.Group |Sort-Object -Property 'Date-Time' -Descending |Select -First 1
}