Powershell -contains / -notcontains - возникли проблемы с результатом массива из SQLServer - PullRequest
1 голос
/ 04 августа 2010

Я использую Invoke-SQLCmd, чтобы получить список элементов, которые я хочу обработать. В этом списке может быть элемент, который указывает, что весь список необходимо обойти. Я попытался выяснить, как использовать оператор -contains и -notcontains, но мне не повезло. Это будет псевдокод:

$dont_process = "dont process"
$list = Invoke-SQLCmd ........
if ($list -notcontains $dont_process) {processing goes here}

$ list - это массив System.array для DataRows. Оператор должен работать с массивом, но я думаю, что массив DataRows не тот тип, с которым он работает. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 07 августа 2010

ваша $dont_process переменная является строкой, не так ли?Операторы -contains и -notcontains используют оператор -eq для каждого элемента в списке.Оператор -eq представляет собой сравнение .Net, поэтому класс DataRow должен поддерживать сравнение между DataRow и строкой.Согласно MSDN, это не .

На самом деле, я не совсем уверен, как бы вы сравнили DataRow и строку.Будет ли это имя первого предмета в ряду?

Для целей этого ответа представим, что вы хотите сравнить .ToString() в DataRow.

Возможно, вам придется прибегнуть к более сложному способу действий:

$list = Invoke-SQLCmd ...

$dontProcess = "dont process"
$shouldProcess = $true    
$foreach ($dataRow in $list) { 
    if ($dataRow.ToString() -eq $dontProcess) { 
        $shouldProcess=$false; 
    } 
}

if($shouldProcess) {
    # processing goes here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...