c # Как мне указать не в утверждении выбора? - PullRequest
0 голосов
/ 02 марта 2012

Я использую метод выбора для набора данных, чтобы получить результаты, соответствующие моему условию:

foreach (DataRow dr in dsPone2.Tables["tt-pone"].Select(strWhereCondition))
{
    dsPone.Tables["tt-pone"].ImportRow(dr);
}

Как мне изменить strWhereCondition с

strWhereCondition += " AND poneid = 0 and aoneid = 0 and tranid = 0";

Куда транзид не равен 0?

Я использую <> или !=?

Ответы [ 4 ]

7 голосов
/ 02 марта 2012

Как это часто бывает, обращение к документации - это путь вперед. DataTable.Select(string) перенаправляет на DataColumn.Expression для документирования того, что разрешено в выражении фильтра, а в списке «Операторы» отображается <>, но не !=.

Лично я бы попытался избежать строковой фильтрации и вместо этого использовал бы LINQ to DataSet, но, конечно, для этого требуется .NET 3.5 или выше.

3 голосов
/ 02 марта 2012

вы должны использовать нотацию SQL <>

в вашем случае tranid <> 0

2 голосов
/ 02 марта 2012

Использование tranid <> 0.

Синтаксис для выражений , описанный здесь .

1 голос
/ 02 марта 2012

В документации для свойства DataColumn.Expression подробно описывается синтаксис, используемый параметром filterExpression метода DataTable.Select . В разделе «Операторы» примерно треть пути вниз по странице написано ...

Конкатенация допускается с использованием логических операторов AND, OR и NOT.

... а также список операторов сравнения <>. Таким образом, это должно означать, что вы можете сделать либо tranid <> 0, либо NOT (tranid = 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...