모두 좋은 소식입니다.LINQ 쿼리의 지정된 캐스트 예외
글쎄, 나는 이상한 '지정 캐스트가 유효하지 않습니다.' 예외는 내 LINQ 쿼리 중 하나입니다. 다음과 같이
코드는 다음과 같습니다 여기
public string GetFiscalYearID(string fiscalYear)
{
int fYear = Convert.ToInt32(fiscalYear);
DataTable dtFiscalYearID = new DataTable();
dtFiscalYearID = DomainBL.GetDomainDataFromFieldName("FiscalYearId");
**var item = from r in dtFiscalYearID.AsEnumerable()
where r.Field<Int32>("FiscalYearNumber") == fYear
select r.Field<Int32>("FiscalYearId");**//Exception at this line
if (item.ToList().Count> 0)
{
return item.ToList()[0].ToString();
}
else
{
return string.Empty;
}
}
, dtFiscalYearID 즉 단 2 열이있는 DB, FiscalYearId 및 FiscalYearNumber에서 DataTable을 가져옵니다. FiscalYearId 및 FiscalYearNumber의 DataTypes는 각각 tinyint 및 smallint입니다.
항목이 확장되면 지정된 캐스트 예외가 표시되며 Int16도 시도했지만 예외가 발생합니다.
여기의 전문가가 위의 코드에서 잘못된 점을 알 수 있습니까? 모든 포인터 또는 그와 같은 것이 꽤 감사 할 것입니다.
안부 아 누락
null 값이 반환되는지 확인하십시오. –
'r [ "FiscalYearNumber"]'와'r [ "FiscalYearId"]'를 대신 사용하십시오. –
'dtFiscalYearID.Rows [0] [ "FiscalYearId"]. GetType()'을 사용하여 필드의 유형을 확인할 수 있다고 생각합니다. – Kaf