2012-11-08 4 views
0

유효 나는, 나는 아래의 코드asp.net - 지정한 캐스트가 없습니다 Linq에

IEnumerable<DataRow> projjType = from projT in dtProjList.AsEnumerable() 
           where projT.Field<int?>("ProjectId") == projId && 
           projT.Field<int?>("FilterId") == 1 
           select projT; 

및 오류의 스택 추적을 dtProjList이 DataTable에 있습니다

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() 

됩니다 시도하고이 오류가 발생했습니다 테이블 구조는 다음과 같습니다.

ProjectId (int) 
ProjectName (string) 
ProjectThumb (string) 
FilterTypeId (int) 
FilterId (int) 
FilterType (string) 

모두 null 값이 아닙니다. 누구든지 나를 도와주세요.

미리 감사드립니다.

업데이트 :: 이것은 내 테이블의 유일한 레코드이며, 단일 레코드로 인한 오류입니까 ?? 모든 필드가 null가 아닌 경우

ProjectId ProjectName ProjectThumb FilterTypeId FilterId FilterType 
    1 Datamaster small_14.jpg   1    1    Final 
+0

int에 필드를 캐스팅? –

답변

4

후`projId`의 종류 (가치)는 무엇 대신에 널 (NULL) int?

var projjType = from projT in dtProjList.AsEnumerable() 
       where projT.Field<int>("ProjectId") == projId && 
         projT.Field<int>("FilterId") == 1 
       select projT; 
+0

@lazyberezovsky에게 빠른 답장을 보내 주셔서 감사합니다.하지만 이것도 시도해 보았습니다. 여전히 작동하지 않습니다. –

+0

@ gofor.net 무엇이 작동하지 않습니까? BTW'projId' 변수가'int' 타입인지 확인하십시오. –

+0

@ gofor.net 쿼리는 모든 행 수에 대해 작동합니다. –

관련 문제