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

时间:2014-07-02 14:08:33

标签: performance search powershell csv powershell-v3.0

我想知道是否有更好的方法可以获取匹配特定查询的单行,而无需搜索两次。 在我最初的代码中,我想计算我的.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 个答案:

答案 0 :(得分:1)

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

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

$raisins.count
$raisins[0]

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