2017-07-18 73 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