2017-07-18 76 views
0

此错误不断显示在这条线的代码转换无效 - ASP.net用VB

ApplicantSett.Nationality1 = IIf(IsDBNull(ds.Tables("Applicant").Rows(i)("Nationality1").ToString) Or IsNothing(ds.Tables("Applicant").Rows(i)("Nationality1").ToString), 
           Nothing, CInt(ds.Tables("Applicant").Rows(i)("Nationality1").ToString)) 

可变Nationality1是整数,它在为空数据库,所以它不是转换。我该怎么办?

+0

您使用'tostring',在必要试图用'integer'匹配'string'。将'Nationality1'解析为一个整数而不是'tostring' – Tikkes

+0

我得到了另一个错误:从类型'DBNull'转换为类型'String'无效。 –

+1

同时检查'DBNull'&'Nothing'条件时删除'ToString':'IIf(IsDBNull(ds.Tables(“Applicant”).Rows(i)(“Nationality1”))或IsNothing(ds.Tables(“Applicant” “).Rows(i)(”Nationality1“)),Nothing,CInt(ds.Tables(”Applicant“).Rows(i)(”Nationality1“)。ToString))'。 –

回答

1
Dim nationality As Object = ds.Tables("Applicant").Rows(i)("Nationality1") 

If (nationality IsNot Nothing 
AndAlso nationality <> System.DBNull.Value 
AndAlso Not System.String.IsNullOrEmpty(nationality.ToString()) Then 
    Dim output As Integer 
    If (System.Int32.TryParse(value, output)) Then 
     ApplicantSett.Nationality1 = output 
    End If 
End If 

如果你有很多需要用来解析返回的值,那么你可能会写自己的解析器在一行代码来解析值。

Integer.Parse与CINT - https://stackoverflow.com/a/423910/2046832