我试图通过使用找到最大值
function ExecuteSqlQuery ($SQLQuery) {
try
{
$Datatable = New-Object System.Data.DataTable
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = $connStr
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$Command.CommandText = $SQLQuery
$Command.CommandTimeout=$commandTimeout
$Reader = $Command.ExecuteReader()
$Datatable.Load($Reader)
return $Datatable
}
$data= ExecuteSqlQuery "Select col1,col2,col3, RowVersion from table"
$byteArray = [System.Collections.ArrayList]@()
foreach ($row in $data) {
$byteArray.Add($row.Item("RowVersion"))
}
$max=($byteArray | Measure-Object -Maximum).Maximum
Write-host $max
但我收到一个错误:
错误:错误:无法比较“System.Byte[]”,因为它不是 IComparable
然后我尝试转换为 int64 并找到最大值
$byteArray = [System.Collections.ArrayList]@()
foreach ($row in $data) {
$byteArray.Add([bitconverter]::ToInt64($row.Item("RowVersion"),0))
}
Write-Host ($byteArray | Measure-Object -Maximum).Maximum
$max=[Convert]::ToByte(($byteArray | Measure-Object -Maximum).Maximum)
Write-host $max
但是还是有错误,输出:
9.1298706847202E+18
2017-10-25 21:00:51 错误:错误:值对于>一个 Int32 来说太大或太小..
有什么方法可以解决这个问题吗?
将二进制转换为 int32 会返回 0