首页 文章

从.csv获取一个匹配的行而不搜索两次?

提问于
浏览
1

我想知道是否有更好的方法可以获取匹配特定查询的单行,而无需搜索两次 . 在我最初的代码中,我想计算我的.CSV中有多少行符合我的搜索查询 .

$raisins=($table | ? {$_.'fruit' -like '*grapes*' -and $_.'hours in sunlight' -like '*a lot*'}| measure).Count

现在,我的任务是从相同的搜索查询结果中获取一行 .

$raisinHit=($table | ? {$_.'fruit' -like '*grapes*' -and $_.'hours in sunlight' -like '*a lot*})
$raisinHit=$raisinHit[0]

但是,我发现使用之前的相同查询搜索我的.CSV真的效率很低,只是为了找到我已经掩盖的单个结果 . 有一个更好的方法吗?如果是这样,你能解释一下吗?

1 回答

  • 1

    只需将匹配项分配给变量,然后返回计数和变量中的元素 .

    $raisins = @($table | 
         ? {$_.'fruit' -like '*grapes*' -and $_.'hours in sunlight' -like '*a lot*'})
    
    $raisins.count
    $raisins[0]
    

    管道周围的 @() 确保 $raisins 将是一个数组,即使只返回一个匹配项 .

相关问题