PowerShell 호출 Linq 에 대한 실험

Windows PowerShell
     (C) Microsoft Corporation。      。

        PowerShell https://aka.ms/pscore6

PS C:\> $a = 0..2
PS C:\> $b = 3..5
PS C:\> $a.tostring()
System.Object[]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, Object]]{$args[0]+$args[1]})
PS C:\> $c
3
5
7
PS C:\> $c[0]
3
5
7
PS C:\> $c.tostring()
System.Linq.Enumerable+d__61`3[System.Object,System.Object,System.Object]
PS C:\> $d = $c | % { $_ }
PS C:\> $d[0]
3
PS C:\> $d.tostring()
System.Object[]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, Object]]{ @{ i=$args[0]; j=$args[1] } })
PS C:\> $c

Name                           Value
----                           -----
j                              3
i                              0
j                              4
i                              1
j                              5
i                              2


PS C:\> $c[0]

Name                           Value
----                           -----
j                              3
i                              0
j                              4
i                              1
j                              5
i                              2


PS C:\> $c.i
0
1
2
PS C:\> $c.tostring()
System.Linq.Enumerable+d__61`3[System.Object,System.Object,System.Object]
PS C:\> $d = $c | % { $_ }
PS C:\> $d

Name                           Value
----                           -----
j                              3
i                              0
j                              4
i                              1
j                              5
i                              2


PS C:\> $d[0]

Name                           Value
----                           -----
j                              3
i                              0


PS C:\> $d[0].i
0
PS C:\> $d.tostring()
System.Object[]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, Object]]{ ($args[0], $args[1]) })
PS C:\> $c
0
3
1
4
2
5
PS C:\> $c.tostring()
System.Linq.Enumerable+d__61`3[System.Object,System.Object,System.Object]
PS C:\> $c[0]
0
3
1
4
2
5
PS C:\> $d = $c | % { $_ }
PS C:\> $d
0
3
1
4
2
5
PS C:\> $d[0]
0
PS C:\> $d[1]
3
PS C:\> $d.tostring()
System.Object[]
PS C:\> $d = [Linq.Enumerable]::ToArray($c)
PS C:\> $d[0]
0
3
PS C:\> $d[0][0]
0
PS C:\> $d.tostring()
System.Object[]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, int[]]]{($args[0], $args[1])})
PS C:\> $c[0]
0
3
1
4
2
5
PS C:\> $c.tostring()
System.Linq.Enumerable+d__61`3[System.Object,System.Object,System.Int32[]]
PS C:\> $d = $c | % { $_ }
PS C:\> $d[0]
0
PS C:\> $d[1]
3
PS C:\> $d.tostring()
System.Object[]
PS C:\> $d = [Linq.Enumerable]::ToArray($c)
PS C:\> $d[0]
0
3
PS C:\> $d[0][0]
0
PS C:\> $d.tostring()
System.Int32[][]
PS C:\> $c = [Linq.Enumerable]::Zip($a, $b, [Func[Object, Object, Object]]{$l = [Collections.Generic.List[int]]::new(); $l.Add($args[0])
; $l.Add($args[1]); $l})                                                                 PS C:\> $c[0]
0
3
1
4
2
5
PS C:\> $d = $c | % { $_ }
PS C:\> $d[0]
0
PS C:\> $d[1]
3
PS C:\> $d.tostring()
System.Object[]
PS C:\> $d = [Linq.Enumerable]::ToArray($c)
PS C:\> $d[0]
0
3
PS C:\> $d[0][1]
3

Linq 를 호출 하여 되 돌아 오 는 유형 은 잘 모 르 겠 지만 IEnumerable 을 실현 한 클래스 일 것 입 니 다. 직접 배열 로 사용 할 수 는 없 지만 For - Object (%) 로 교체 할 수 있 습 니 다.따라서 이 를 통 해 알 수 있 듯 이 Zip 내부 익명 함수 가 교체 가능 한 유형 으로 되 돌아 갈 때 For - Object (%) 명령 을 사용 하여 Zip 이 되 돌아 오 는 종 류 를 교체 가능 한 유형의 배열 로 바 꿀 수 있 고 교체 가능 한 유형 으로 되 돌아 갈 때 For - Object (%) 명령 을 사용 하면 Zip 이 되 돌아 오 는 종 류 를 1 차원 배열 로 나 눌 수 있 습 니 다. 그러면 우리 의 요구 에 도달 하지 못 하고 사용 해 야 합 니 다 [Linq.Enumerable]::ToArray.방법 만 이 그것 을 '2 차원 배열' 로 바 꿀 수 있다.

좋은 웹페이지 즐겨찾기