преобразование объекта данных в int - PullRequest
0 голосов
/ 11 октября 2018

У меня есть цикл foreach, где я пытаюсь назначить объект, взятый из sql, который содержит идентификатор, для моей модели списка, в которой этот элемент должен быть int.

 foreach (DataRow item in dtbProduct.Rows)
            {
                PaymentsList.Add(new Payments()
                {
                    PaymentID = item["p_ID"],

, в этом случае я получаю синтаксическую ошибку

не может явно преобразовать objecto в int

Но если я пишу

PaymentID = int.Parse(item["p_ID"].ToString()),

, проект запускается, но я получаю ошибку времени выполнения

System.FormatException: 'Входная строка была в неправильном формате.'

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Если это значение равно Int в sql, то могут присутствовать некоторые значения null, что приводит к ошибке при преобразовании.попробуйте проверить null значения перед преобразованием в int

ex -

PaymentID = Convert.ToInt32( string.IsNullOrEmpty(item["p_ID"].ToString()) ? "0" : item["p_ID"].ToString()); // provided 0 if null

Попробуйте это

0 голосов
/ 11 октября 2018

вместо int.Parse вы можете использовать int.TryParse - читайте https://www.dotnetperls.com/parse

или, если это долгая попытка долго.TryParse

исследует отображение типа данных в .net в sqlсервер для установки что нужно

...