Ошибка при получении SUM () столбца в datatable - PullRequest
0 голосов
/ 29 декабря 2011
DataTable dtStock = new DataTable();
DataColumn dcTotalCases = new DataColumn("TotalCases");
dcTotalCases.DataType = System.Type.GetType("System.Int32");
dcTotalCases.ReadOnly = false;
dtStock.Columns.Add(dcTotalCases);

Метод 1

int sum = Convert.ToInt32(dtStock.Compute("Sum([TotalCases]) ", "[TotalCases] <> ''"));

Когда я использую этот метод, я получаю сообщение об ошибке

Неправильное использование агрегатной функции Sum () и Type: String.

Метод 2

int sum = Convert.ToInt32(dtStock.Compute("SUM(Convert([TotalCases], 'System.Int32'))", "");

Когда я использую этот метод, я получаю ошибку

Синтаксическая ошибка в агрегированном аргументе: ожидается один аргумент столбца свозможный квалификатор 'Child'.

Пожалуйста, помогите мне ...

Ответы [ 2 ]

6 голосов
/ 29 декабря 2011

Я считаю, что метод № 1 должен работать - просто не сравнивайте ваш INT столбец с пустой строкой !!

Так что используйте что-то вроде этого:

int sum = Convert.ToInt32(dtStock.Compute("Sum(TotalCases)", "[TotalCases] > 0"));

или

int sum = Convert.ToInt32(dtStock.Compute("Sum(TotalCases)", "[TotalCases] IS NOT NULL"));

или что вам нужно - просто не используйте [TotalCases] <> '', так как это сравнивает INT с пустой строкой - и это не сработает!

1 голос
/ 06 июня 2013

У меня есть Datatable, для которого я не указал тип данных ни для одного столбца.Все значения в столбце являются целочисленными.когда я использую вышеупомянутую сумму (), я получаю ошибку.Invalid usage of aggregate function Sum() and Type: String. Но когда я указываю тип данных для столбца, он работает правильно.

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