Конвертировать datarow в int - PullRequest
5 голосов
/ 02 марта 2011

У меня есть datarow, но как я могу преобразовать его в int?

Я пробовал это, но это не работает.

dsMovie = (DataSet)wsMovie.getKlantId();
            tabel = dsMovie.Tables["tbl_klanten"];
            eersteRij = tabel.Rows[0];
(Int32.Parse(eersteRij.ToString())

Ответы [ 5 ]

12 голосов
/ 02 марта 2011

DataRow - это объект; это не целое число. DataRow содержит один или несколько столбцов данных. Вы можете проиндексировать в DataRow для доступа к значениям этих кулонов.

Если таблица tbl_klanten содержит один столбец, и этот столбец является целым числом, вы можете сделать следующее:

var myInt = (int)eersteRij[0];

если столбец является строкой, содержащей значение целого числа,

var myInt = int.Parse(eersteRij[0]);

Если столбец назван klant_id ...

var myInt = (int)eersteRij["klant_id"];

если столбец является строкой, содержащей значение целого числа,

var myInt = int.Parse(eersteRij["klant_id"]);
7 голосов
/ 08 ноября 2016

Просто используйте метод Field:

int result = row.Field<int>("ColName");

Метод Field также поддерживает обнуляемые типы :

Метод Field обеспечивает поддержку доступа к столбцам как обнуляемым. типы. Если базовым значением в DataSet является Value, возвращается Обнуляемый тип будет иметь значение null.

И обратите внимание:

Метод Field не выполняет преобразования типов. Если требуется преобразование типа, сначала необходимо получить значение столбца с помощью метода Field. Затем значение столбца следует преобразовать в другой тип.

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

Потому что даже на этом уровне иерархии у вас все еще есть DataRow, и вы не можете преобразовать DataRow в int .. хотя значение может быть преобразовано.

И почему вы конвертируете весь DataRow в int.Обычно вы хотите получить значение в ячейке в строке, поэтому попробуйте что-то вроде этого:

int value = (int)eersteRij.Items[0];

, где 0 можно заменить положением ячейки (int) илиИмя столбца (строка)

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

Вам нужно будет знать, по какому индексу находится нужный объект, и привести его к типу int, например ::

.
int value = (int)eersteRij[0];
0 голосов
/ 12 февраля 2019
DataSet dataSet = getDataFromDatabase();
DataRow tableRow = dataSet.Tables[0].Rows[0];

int valueAsInteger = Convert.ToInt32(tableRow["COLUMN_NAME"]);
...