Подтвердить что ты не робот

InvalidCastException в запросе LINQ

Для этого запроса LINQ я получаю исключение ниже:

(from row in ds.Tables[0].AsEnumerable()
 where row.Field<string>("Dept_line_code") == DeptCode &&
 row.Field<string>("Skill_Name") == skill &&
 row.Field<string>("Acct_Code") == account && row.Field<string>("Location") == dtNewTable.Rows[intRow]["Location"].ToString()
 select row.Field<int>("Presently_Available") == null ? 0 : row.Field<int>("Presently_Available")
).FirstOrDefault();

Информация об исключении:

Тип исключения: InvalidCastException

Сообщение об исключении: нельзя использовать DBNull.Value для ввода "System.Int32". Используйте тип с нулевым значением.

Я не знаю тип NULL, и я не понимаю, как использовать тип NULL для преодоления этого исключения.

4b9b3361

Ответ 1

вам нужно сделать int accept null value = > int?

row.Field<int?>("Presently_Available") == null ? 0 : row.Field<int>("Presently_Available") ;

и это ссылка для Nullable Types

Ответ 2

select row.Field<int?>("Presently_Available")

Ответ 3

измените row.Field<int> на row.Field<int?>