首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LINQ Any()的PowerShell等价物?

LINQ Any()的PowerShell等价物?
EN

Stack Overflow用户
提问于 2009-09-30 17:07:23
回答 11查看 27.5K关注 0票数 54

我想从存储在subversion中的脚本的位置找到顶层的所有目录。

在C#中应该是这样的

代码语言:javascript
复制
Directory.GetDirectories(".")
  .Where(d=>Directories.GetDirectories(d)
     .Any(x => x == "_svn" || ".svn"));

我在PowerShell中找到"Any()“的对等物有点困难,我不想经历调用扩展方法的尴尬。

到目前为止,我得到了以下信息:

代码语言:javascript
复制
 Get-ChildItem | ? {$_.PsIsContainer} | Get-ChildItem -force | ? {$_.PsIsContainer -and $_.Name -eq "_svn" -or $_.Name -eq ".svn"

这会找到svn目录本身,但不会找到它们的父目录--这正是我想要的。加分,如果你能告诉我为什么

代码语言:javascript
复制
 | Select-Object {$_.Directory}

在该命令列表的末尾只显示一系列空行。

EN

回答 11

Stack Overflow用户

发布于 2009-09-30 17:11:44

不幸的是,在PowerShell中没有类似的东西。我写了一篇关于这方面的博客文章,并提出了一个通用测试的建议--任何函数/过滤器。

代码语言:javascript
复制
function Test-Any() {
    begin {
        $any = $false
    }
    process {
        $any = $true
    }
    end {
        $any
    }
}

博客帖子:

票数 24
EN

Stack Overflow用户

发布于 2014-02-28 16:38:21

@JaredPar答案的一个变体,将测试合并到Test-Any过滤器中:

代码语言:javascript
复制
function Test-Any {
    [CmdletBinding()]
    param($EvaluateCondition,
        [Parameter(ValueFromPipeline = $true)] $ObjectToTest)
    begin {
        $any = $false
    }
    process {
        if (-not $any -and (& $EvaluateCondition $ObjectToTest)) {
            $any = $true
        }
    }
    end {
        $any
    }
}

现在我可以像这样编写“任何”测试

代码语言:javascript
复制
> 1..4 | Test-Any { $_ -gt 3 }
True

> 1..4 | Test-Any { $_ -gt 5 }
False
票数 18
EN

Stack Overflow用户

发布于 2016-11-17 00:12:55

您可以使用原始的LINQ Any

代码语言:javascript
复制
[Linq.Enumerable]::Any($list)
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1499466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档