【问题标题】:Get a single, matching row from a .csv without searching twice?从 .csv 中获取一个匹配的行而不搜索两次?
【发布时间】:2014-07-02 14:08:33
【问题描述】:

我想知道是否有更好的方法可以获取与特定查询匹配的单行,而无需搜索两次。 在我最初的代码中,我想计算 .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 文件,只是为了找到一个我已经忽略的结果,这确实效率低下。 有一个更好的方法吗?如果是,你能解释一下怎么做吗?

【问题讨论】:

    标签: performance search powershell csv powershell-3.0


    【解决方案1】:

    只需将匹配项分配给一个变量,然后从变量中返回计数和一个元素。

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      相关资源
      最近更新 更多