对于这个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”。请使用可空类型。
我不知道可以为空的类型,我不知道如何使用可空类型来克服此异常。
答案 0 :(得分:23)
你必须使int accept null value =&gt;诠释?
row.Field<int?>("Presently_Available") == null ? 0 : row.Field<int>("Presently_Available") ;
这是Nullable Types的link
答案 1 :(得分:8)
select row.Field<int?>("Presently_Available")
答案 2 :(得分:5)
将row.Field<int>
更改为row.Field<int?>