Как проверить, содержит ли datatable какие-либо совпадающие строки? - PullRequest
2 голосов
/ 11 августа 2010

Я использую Вычислить для суммирования данных, которые имеют условие.Иногда внутри таблицы данных отсутствуют строки, соответствующие моим критериям, поэтому я получаю исключение при вычислении Объект не может быть преобразован из DBNull в другие типы.

Есть ли способ проверить / отфильтроватьdatatable, чтобы увидеть, есть ли у него нужные строки, если да, то я применяю Compute.Пожалуйста, совет.

total = Convert.ToDecimal(CompTab.Compute("SUM(Share)", "IsRep=0"));

Ответы [ 2 ]

3 голосов
/ 11 августа 2010

попробуйте

object objCompute=CompTab.Compute("SUM(Share)", "IsRep=0");
if(objCompute!=DBNull.Value)
{
total = Convert.ToDecimal(objCompute);
}
2 голосов
/ 11 августа 2010

Во-первых, присвойте значение объекту, который может безопасно лечь и протестирован на нулевые значения.

Во-вторых, используйте TryParse (), если есть вероятность, что он не сработает (что, вероятно, излишне в этомсценарий ... Функция Compute всегда будет приводить ни к чему-либо, или к чему-то, что может быть преобразовано ... Но я уже набрал код, поэтому я его оставлю. И это просто хорошая привычка.)

object oTotal = CompTab.Compute("Sum(share)", "IsRep=0");
Decimal total;
if(oTotal != null)
{
   if(!System.Decimal.TryParse(oTotal.ToString(), out total))
   {
        // whatever logic you need to include if the TryParse fails.
        // Should never happen in this case.
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...