Выбор DataSet не складывается - PullRequest
1 голос
/ 01 апреля 2009

Я выполняю несколько отборов в наборе данных. Общее количество записей из всех этих выборок должно соответствовать общему количеству записей в наборе данных, но это не так. (Всего из всех выборок меньше.) Я читал, что в .Net 1.1 Select была ошибка с несколькими условиями AND, но это VS2005 & .Net 2.0.

Вот код: Примечание. Некоторые категории строк не заполняются.

string Filter;
Filter = "Category = 'HIGH'";
Response.Write("High: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");

int TotalRecords = dslErrors.Tables[0].Rows.Count; //This is correct

Filter = "Category = 'MEDIUM'";
Response.Write("Medium: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");

Filter = "Category = 'LOW'";
Response.Write("Low Error Count: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");

Filter = "((Category <> 'HIGH') AND (Category <> 'MEDIUM') AND (Category <> 'LOW'))";
Response.Write("Other: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");

1 Ответ

7 голосов
/ 01 апреля 2009

Если есть записи, для которых Category равно dbnull, то они не будут совпадать и с выражениями, которые вы перечислили.

Я предлагаю изменить ваш последний filter на:

"(
   (
         (Category <> 'HIGH') 
     AND (Category <> 'MEDIUM')
     AND (Category <> 'LOW')
   )
   OR Category IS NULL
)";

Причина, по которой это не работает, заключается в том, что сравнение с dbnull дает ноль, а не ожидаемое ложное значение.

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