링크란 무엇입니까?PowerShell의 첫 번째 동등 제품은 무엇입니까?
아래의 스니펫은 파일 목록에서 FTP의 디렉터리를 탐지합니다.
C#와 같이 아래와 같습니다.
var files = new List<string>(){"App_Data", "bin", "Content"};
var line = "drwxr-xr-x 1 ftp ftp 0 Mar 18 22:41 App_Data"
var dir = files.First(x => line.EndsWith(x));
PowerShell의 마지막 줄을 변환하려면 어떻게 해야 합니까?
이런 거...
$files = @("App_Data", "bin", "Content")
$line = "drwxr-xr-x 1 ftp ftp 0 Mar 18 22:41 App_Data"
$dir = $files | Where { $line.EndsWith($_) } | Select -First 1
마지막 줄의 이러한 버전은 모두 동일합니다.
$dir = @($files | Where { $line.EndsWith($_) })[0]
$dir = $files | Where { $line.EndsWith($_) } | Select -index 0
$dir = $files | Where { $line.EndsWith($_) } | Select -First 1
위의 동작이 Linq와 정확히 동일하지 않다는 점이 지적되었습니다.첫 번째 이유는 Linq 때문입니다.첫 번째는 다음 두 가지 경우에 예외를 던집니다.
- 소스 또는 술어가 null인 경우 ArgumentNullException을 슬로우합니다.
- 잘못된 작업을 던집니다.원본 시퀀스가 비어 있거나 조건을 충족하는 요소가 없는 경우 예외입니다.
정확하게 그런 행동을 하고 싶다면 추가 경비 코드가 필요합니다.
Robert Groves가 말했듯이, "Select-Object-First Occurence"는 트릭을 수행하며, "Last Occurence"도 사용할 수 있습니다.
그건 그렇고, 다른 정적들처럼.파워셸에서 linq를 사용할 수 있는 네트 방법.
[Linq.Enumerable]::First($list)
[Linq.Enumerable]::Distinct($list)
[Linq.Enumerable]::Where($list, [Func[int,bool]]{ param($item) $item -gt 1 })
Powershell 어레이 » 위치 Function을 사용하여 다음과 같이 전달하는 기본 방법이 있습니다.
(1..9).Where({ $_ -gt 3}, "First") # 4
열거형에서 직접 모드를 사용할 수도 있습니다.
$mode = [System.Management.Automation.WhereOperatorSelectionMode]::First
(1..9).Where({ $_ -gt 3}, $mode) # 4
열거형의 값 사용
이름. | 발 | 묘사 |
---|---|---|
Default |
0 |
모든 항목 반환 |
First |
1 |
첫 번째 항목 반환 |
Last |
2 |
마지막 항목 반환 |
SkipUntil |
3 |
조건이 참이 될 때까지 항목 건너뛰기 |
Until |
4 |
조건이 참이 될 때까지 모든 항목 반환 |
Split |
5 |
두 요소의 배열을 반환합니다. |
참고 항목:PowerShell V4에서 각 운영자의 위치 및 대상 체크아웃
Doug Finke는 C#을 Powershell http://dougfinke.com/video/CSharpToPowerShell.html 로 변환하는 멋진 비디오(단 7분)를 제작했습니다.
쉼표 구분이 암시적으로 배열로 처리되지만 로버츠 예제는 실제로 매우 좋습니다.
이를 수행하는 가장 빠른 방법은 모든 것을 단일 파이프라인에 넣는 것입니다.
$dir = "App_Data", "bin", "Content" | % { if("drwxr-xr-x 1 ftp ftp 0 Mar 18 22:41 App_Data".EndsWith($_)) { $_ } } | select -first 1
이것은 매우 간단한 구현입니다.First
:
function First($collection)
{
foreach ($item in $collection)
{
return $item
}
return $null
}
돌아오는 대신에$null
당신은 던질 수 있습니다.InvalidOperationException
예외.
언급URL : https://stackoverflow.com/questions/5360145/what-is-the-linq-first-equivalent-in-powershell
'programing' 카테고리의 다른 글
'Microsoft' 파일 또는 어셈블리를 로드할 수 없습니다.보고서 뷰어.공통, 버전=11.0.0.0 (0) | 2023.08.09 |
---|---|
z-index가 작동하지 않는 이유는 무엇입니까? (0) | 2023.08.09 |
:before는 img 요소에서 작동하지 않습니까? (0) | 2023.08.09 |
WordPress 데이터베이스를 새 서버로 마이그레이션할 때 오류 발생 (0) | 2023.08.09 |
Android에서 나만의 URI 체계를 구현하는 방법 (0) | 2023.08.09 |