InvalidCastException в запросе LINQ - PullRequest
       29

InvalidCastException в запросе LINQ

13 голосов
/ 10 января 2012

Для этого запроса 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'.Пожалуйста, используйте обнуляемый тип.

Я не знаю обнуляемый тип, и я не понимаю, как использовать обнуляемый тип, чтобы преодолеть это исключение.

Ответы [ 3 ]

23 голосов
/ 10 января 2012

Вы должны заставить int принимать нулевое значение => int?

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

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

8 голосов
/ 10 января 2012
select row.Field<int?>("Presently_Available")
5 голосов
/ 10 января 2012

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

...