2012-03-23 8 views
0

habe ich versucht Wert auf ein Objektarray zuzuordnen, die wie folgt definiert ist ...Object arrary werfen Fehler auf Elementart auf ReDim

Dim englishTextAry As Object(,) = New Object(,) {} 

Ich Looping durch eine DataReader- und zu versuchen, die Werte zuweisen zu diesem Array mit dem folgenden Code ....

While rdr.Read() 
    Dim recID As String = rdr.Item(0) 
    Dim dataVal As String = rdr.Item(1) 

    ReDim Preserve englishTextAry(recID, dataVal) 

End While 

Aber die ReDim wirft einen Fehler auf DataVal nicht ein Integer.

Was mache ich hier falsch? Kann mir jemand in die richtige Richtung zeigen?

Danke,

Antwort

1

Sie werden eine schreckliche Anzahl von ReDims für eine nicht geringe Anzahl von Zeilen machen. Sie könnten eine Klasse verwenden, um die ID-Wert-Paare und eine Liste zu halten, um sie zu halten:

Module Module1 

    Class IdValPair 
     Property RecId As String 
     Property DataVal As String 
    End Class 

    Sub Main() 
     Dim myItems As New List(Of IdValPair) 
     '... 
     While rdr.Read 
      myItems.Add(New IdValPair With {.RecId = rdr.Item(0), .DataVal = rdr.Item(1)}) 
     End While 

    End Sub 

End Module 

... und Ihre Frage zu beantworten, die ReDim-Anweisung nimmt Zahlen für die Größen bis ReDim.

+0

Wie lese ich die Daten zurück? Ich hätte eine Variable mit dem Namen value, die einer der recId in der Klasse entsprechen würde, ich brauche die dataVal wo Wert = recId. – htm11h

+0

Sie können LINQ verwenden, um die Daten in der Liste abzufragen, z. Wenn nur ein DataVal abgerufen werden soll: Dim x = (Aus p In myItems Wo p.DataVal = Wert Wählen Sie p.RecId) .First –

+0

Danke, es hat funktioniert. – htm11h

-1

Blick in die Arraylist-Objekt. Normalerweise verwende ich das zum dynamischen Hinzufügen/Abrufen von Werten mit viel einfacherem Code als normale Arrays.

+0

'ArrayList' ist veraltet. Benutze es nicht. Der Namespace 'System.Collections.Generic' bietet Ersatz. –

+0

Wenn Sie nicht mit Visual Studio 2003 festgefahren sind, sollten Sie eine generische Liste anstelle einer ArrayList verwenden. –