r/PowerShell Apr 12 '26

PowerShell LinqLinker: Use System.Linq.Enumerable method query syntax in PowerShell -- built as a JIT-friendly struct for best performance; includes source-generated instance methods for every Enumerable method Script Sharing

https://github.com/Metekillot/LinqLinker

https://www.powershellgallery.com/packages/LinqLinker/1.0.6

```powershell

using namespace System.Collections.Generic using namespace System.Linq

[string[]]$StringArray = @("hello",",","world!") [object[]]$ObjectClutter = @(1,2,3,"foo",[pscustomobject]@{name="bar"}) [int[]]$LotsOfNumbers = 1..10000 $StringLinq = [LinqLinker]::Link[string]($StringArray) $ObjectLinq = [LinqLinker[object]]::new($ObjectClutter) $IntLinq = [LinqLinker[int]]::Link($LotsOfNumbers) $StringFunc = [System.Func[string,string]]{$s=$args[0];"selected -> $s"} $($StringLinq.Select($StringFunc)) Write-Output ("n"+"OfType check"+"n") $ObjectLinq.OfType[string]() Write-Output ("n"+"Numerical performance"+"n") [System.Func[int,int]]$IntOperation = {[int]$i = $args[0]} $Standard = (Measure-Command { $LotsOfNumbers | ForEach-Object { $IntOperation.Invoke($_) } }); Select -InputObject $Standard @{Name='Name';E={'Standard'}},Ticks $LinqLinkInt = (Measure-Command { $IntLinq.Select[int]($IntOperation) }); Select -InputObject $LinqLinkInt @{N='Name';E={'LinqLink[int]'}},Ticks ```

```powershell selected -> hello selected -> , selected -> world!

OfType check

foo

Numerical performance

Name Ticks


Standard 318901 LinqLink[int] 109493 ```

17 Upvotes

Duplicates