LINQ en PowerShell
Estoy convirtiendo la aplicación de C# a PowerShell. ¿Cómo puedo llamar a LINQ desde PowerShell?
“`powershell
[Data.DataTable]$dt = New-Object System.Data.DataTable
[Data.DataColumn]$column = New-Object System.Data.DataColumn "Id", ([int])
$dt.Columns.Add($column)
<h1>agregar datos</h1>
[Data.DataRow]$row = $dt.NewRow()
$row["Id"] = 1
$dt.Rows.Add($row)
$row = $dt.NewRow()
$row["Id"] = 2
$dt.Rows.Add($row)
<h1>LINQ en C#: int[] results = dt.AsEnumerable().Select(d => d.Field<int>("Id")).ToArray();</h1>
[int[]]$results = [Linq.Enumerable]::Select($dt,[Func[int,int]]{ $args[0]})
<h1>Error: No se puede encontrar una sobrecarga para "Select" y el número de argumentos: "2"</h1>
Write-Host $results
“`
davy.ai
Para llamar a LINQ desde PowerShell, puedes usar la clase
[System.Linq.Enumerable]
. Sin embargo, en el código de ejemplo proporcionado, la conversión no se realiza correctamente. El código en C# selecciona el campo"Id"
de cada fila de la tabla y lo convierte en un array, pero el código en PowerShell simplemente devuelve la misma tabla de datos. Para solucionar esto, puedes modificar el código PowerShell de la siguiente manera:Este código primero convierte las filas de la tabla en una colección enumerable, luego usa LINQ para seleccionar el campo
"Id"
de cada fila y convertirlo en un array. El array resultante se almacena en la variable$results
, que se puede utilizar o imprimir según se desee.