Как преобразовать тип столбца DataTable? - PullRequest
0 голосов
/ 04 июля 2011

Я пытаюсь реализовать:

dtGroupedBy.Compute("sum(POWER)",dvv.RowFilter); 

Это приводит к ошибке:

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

Как бы мы преобразовали его в тип столбца ??

Ответы [ 3 ]

1 голос
/ 04 июля 2011

Вы не можете использовать агрегатную функцию Sum() в строковом поле.

Есть 2 вещи, которые вы можете сделать

  • Переопределить существующий элемент столбца в вашей базе данных (или схема) в качестве числового поля. (рекомендуется)
  • выполните System.Int32 преобразование данных, передаваемых в агрегатную функцию. чтобы вы могли сделать следующее

dtGroupedBy.Compute ("sum (CONVERT (" + МОЩНОСТЬ + " 'System.Int32'))", dvv.RowFilter);

1 голос
/ 04 июля 2011

Метод Compute поддерживает выражения, и они поддерживают CONVERT function, который вы можете использовать внутри выражения.

Например, вы можете вычислить сумму столбца как

MyDataTable.Compute("Sum(Convert(your column name, 'Data Type'))") 
1 голос
/ 04 июля 2011

Это будет зависеть от того, как вы создали DataTable.Если это просто прямо из SQL, вам следует изменить сам SQL так, чтобы столбец POWER преобразовывался при его извлечении.

Однако, если значение всегда должно быть в первую очередь числовым, я бы настоятельно рекомендовалПредлагаем вам вернуться к схеме базы данных - было бы удобнее изменить тип столбца, если это возможно.

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