c#错误-“;指定的强制转换无效”;
本文关键字:转换 无效 错误 | 更新日期: 2023-09-27 18:29:51
我在linq-to-datatable查询的where子句中收到一个"指定的强制转换无效"错误。我似乎不知道它出了什么问题。我想是paramValues引起了问题,因为它们是object类型,但我正在对每一个进行Convert.ToInt32。我仍然收到错误。需要注意的是,数据表中的所有列都是int类型。有什么想法吗?
protected DataRow getSubjectBandDataRow(DataSet relationalDataSet, DataRow dr, Parameters Params)
{
DataRow myRow = relationalDataSet.Tables["SummaryDataLocalBands"].NewRow();
myRow["fkSummarySubjectLocalID"] = (from subj in relationalDataSet.Tables["SummaryDataLocal"].AsEnumerable()
where (subj.Field<int>("fkRosterSetID") == Convert.ToInt32(Params.Item(2).ParamValue) &&
subj.Field<int>("fkTestInstanceID") == dr.Field<int>("pkTestInstanceID") &&
subj.Field<int>("fkTestTypeID") == Convert.ToInt32(Params.Item(10).ParamValue) &&
subj.Field<int>("fkSchoolYearID") == dr.Field<int>("pkSchoolYearID") &&
subj.Field<int>("fkRosterTypeID") == 1 &&
subj.Field<int>("fkDistrictID") == (Convert.ToInt32(Params.Item(3).ParamValue) == 0 ? 1 : 0) &&
subj.Field<int>("fkSchoolID") == Convert.ToInt32(Params.Item(3).ParamValue) &&
subj.Field<int>("fkGradeID") == Convert.ToInt32(Params.Item(5).ParamValue) &&
subj.Field<int>("fkDepartmentID") == Convert.ToInt32(Params.Item(6).ParamValue) &&
subj.Field<int>("fkCourseID") == Convert.ToInt32(Params.Item(7).ParamValue) &&
subj.Field<int>("fkPeriodID") == Convert.ToInt32(Params.Item(8).ParamValue) &&
subj.Field<int>("fkDemoCommonCategoryID") == dr.Field<int>("fkDemoCommonCategotyID") &&
subj.Field<int>("fkDemoCommonCodeID") == Convert.ToInt32(Params.Item(1).ParamValue) &&
subj.Field<int>("fkTest_SubjectID") == dr.Field<int>("fkTest_SubjectID"))
select subj.Field<int>("pkSummarySubjectLocalID")).Single();
//more unimportant code here
return myRow;
}
当由于对象的值无法转换为目标类型而无法执行特定的强制转换时,就会出现您看到的错误。因此,您的某个参数中可能存在无法转换为整数的内容。例如,null或空字符串可能是候选字符串。