c#错误 - “指定的强制转换无效”

时间:2014-11-09 23:58:50

标签: c# linq casting dataset

我得到一个"指定演员阵容无效"我的linq的where子句中的错误到datatable查询。我似乎无法弄清楚它有什么问题。我会想象它导致问题的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;
    }

1 个答案:

答案 0 :(得分:0)

由于无法将对象的值转换为目标类型,因此无法执行特定强制转换时出现错误。因此,您可能在某个参数中有某些内容无法转换为整数。例如,空字符串或空字符串可能是候选字符。