我得到一个"指定演员阵容无效"我的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;
}
答案 0 :(得分:0)
由于无法将对象的值转换为目标类型,因此无法执行特定强制转换时出现错误。因此,您可能在某个参数中有某些内容无法转换为整数。例如,空字符串或空字符串可能是候选字符。