我在尝试以下代码时遇到此错误
IEnumerable<DataRow> projjType = from projT in dtProjList.AsEnumerable()
where projT.Field<int?>("ProjectId") == projId &&
projT.Field<int?>("FilterId") == 1
select projT;
并且错误的堆栈跟踪是
at System.Data.DataRowExtensions.UnboxT`1.NullableField[TElem](Object value)
at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName)
at Folder.Projects.<>c__DisplayClass28.<repProjectList_ItemDataBound>b__1e(DataRow projT) in D:\Folder\Project.aspx.cs:line 1061
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.SystemCore_EnumerableDebugView`1.get_Items()
其中dtProjList是DataTable,表结构如下,
ProjectId (int)
ProjectName (string)
ProjectThumb (string)
FilterTypeId (int)
FilterId (int)
FilterType (string)
所有都不是空值。任何人都可以帮帮我。
提前感谢。
更新 ::这是我记录的唯一记录吗?
ProjectId ProjectName ProjectThumb FilterTypeId FilterId FilterType
1 Datamaster small_14.jpg 1 1 Final
答案 0 :(得分:4)
如果所有字段都不为空,则将字段转换为int
而不是可为空int?
var projjType = from projT in dtProjList.AsEnumerable()
where projT.Field<int>("ProjectId") == projId &&
projT.Field<int>("FilterId") == 1
select projT;