linq이 'System.Int32'형식의 개체를 캐스팅 할 수없는 이유는 무엇입니까? 'System.String'예외를 입력하십시오. 이 코드는 형식화되지 않은 DataTable에서 DataTextField 및 DataValueField를 가져 와서 KeyValuePair (string, string) 목록에 배치하는 일반 함수의 일부입니다. linq 쿼리 위의 각 루프에 대해 각 항목을 단계별로 추가했는데 제대로 작동했습니다. DataValueField에 대해 리턴 된 데이터는 숫자이지만 형식화되지 않은 세트입니다. 필드에 ToString()을 시도했는데 다음에 시도 할 항목이 무엇인지 모릅니다. 어떤 도움을 주시면 감사하겠습니다.Linq to untyped Datatable 형식의 'System.Int32'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.
Private Function GetCurrentBoundControlDT(ByVal StoredProcedure As String, ByVal ParamList As String, ByVal DataTextField As String, ByVal DataValueField As String) As List(Of KeyValuePair(Of String, String))
Dim ds As DataSet = Nothing
Dim dt As DataTable = Nothing
Dim BoundControlDataList As List(Of KeyValuePair(Of String, String)) = Nothing
If ParamList.Trim <> String.Empty Then
StoredProcedure = String.Format("{0} {1}", StoredProcedure, ParamList)
End If
ds = RG.GetDS(StoredProcedure)
If Not ds Is Nothing AndAlso ds.Tables.Count > 0 Then
dt = ds.Tables(0)
'This works fine
For Each r As DataRow In dt.Rows
Dim test1 As String = r(DataTextField)
Dim test2 As String = r(DataValueField)
Dim kv As New KeyValuePair(Of String, String)(test1, test2)
Next
'Blows up here...
BoundControlDataList = (From ThisTable In dt.AsEnumerable() _
Select New KeyValuePair(Of String, String)(ThisTable.Field(Of String)(DataTextField).ToString(), _
ThisTable.Field(Of String)(DataValueField).ToString())).ToList()
End If
Return BoundControlDataList
End Function