2017-01-17 1 views
-1

In VB.NET versuche ich durch den Wert in einer Liste zu zählen, bis der Wert für "stock" in meiner DataTable, Boxen, gleich ist der Wert in meiner Liste. In diesem Fall sollte eine Zeile in meiner neuen DataTable "output" erstellt werden. Ich würde dann weiter durch die Liste zählen und nach anderen übereinstimmenden Instanzen suchen, die in "Ausgabe" eingefügt werden.Analysieren durch DataTable für übereinstimmenden Wert und Erstellen einer neuen DataTable aus den Ergebnissen

Bis jetzt zählt durch die Liste und dann innerhalb dieser Zählung Durchlaufen der Datentabelle, um den Wert des Wertes wunderbar funktioniert. Der Teil, an dem ich aufgehängt werde, ist, wenn ich versuche, die passende Reihe zu nehmen und sie in einen anderen Tisch zu legen.

Dim output As DataTable 
Dim jsonstringy As String = BoxComms.WebGet("http://foo.foo.foo")  'PULLS JSON STRING 
Dim Boxes = Newtonsoft.Json.JsonConvert.DeserializeObject(Of DataTable)(jsonstring) 
Dim MyString As String = TextBox1.Text    'MAKE STRING OF STOCK #'s FROM TEXTBOX 
MyString = MyString.Replace(" ", "")          'GET RID OF SPACES 
Dim MyArray() As String = MyString.Split(",")    'SEPERATE COMMA DELIMETED LIST 
Dim MyList As List(Of String) = MyArray.ToList() 

For Each value In MyList         'COUNT THROUGH LIST OF STOCK #'s 
    For Each row As DataRow In Boxes.Rows 
     If row("stock") = value Then  'IF STOCK # IS EQUAL TO ANY OF NUMBERS IN TEXTBOX 
      output.ImportRow(row)   'ADD ROW FROM DATATABLE Boxes to DATATABLE output 
     End If 
    Next row 
Next 
+0

A DataRow nur zu einer Tabelle gehören. Es gibt wahrscheinlich einen schnelleren Weg, um die Zeilen zu finden, die Sie wollen, wenn Sie weiter erklären könnten - Sie nicht wirklich "datarows" oder Datatables "parse" – Plutonix

+0

Ich habe eine Datentabelle erstellt von deserialized JSON in der Cloud gespeichert. In meiner Anwendung gibt es eine Suchfunktion. Meine Anwendung verfügt über eine DataGridView-Hauptanzeige, die erfolgreich für die Anzeige verschiedener Databases verwendet wird, die von meinem Programm verarbeitet werden. Ich versuche, eine Datentabelle zu erstellen, um die Suchergebnisse in meinem DataGridView anzuzeigen. Ich habe verschiedene Möglichkeiten gefunden, Daten von einer Tabelle in eine andere zu kopieren. Ich bekomme immer system.NullReferenceException. Ich denke, ich muss zuerst meine Spalten kopieren – Cfoote7

+0

Wenn Sie Ihren Beitrag mit etwas von diesem * und * einigen Beispiel JSON bearbeiten könnten, bin ich mir ziemlich sicher, dass es einen schnelleren, einfacheren Weg gibt. Das Problem ist, dass wir keine Ahnung haben, wie diese Daten aussehen – Plutonix

Antwort

0

Die Lösung war ziemlich einfach, meine DataTable benötigt zuerst ein Schema. Um das Schema zu kopieren, brauchte ich nur die neue Tabelle als Klon zu initialisieren. Um dies zu tun, war der Code wie folgt.

Dim output As DataTable = Boxes.Clone() 

Klon gegen Kopie. Kopieren Sie erhalten das Schema und Datenklon erhält nur das Schema. Als ich dann in der ersten Tabelle nach Übereinstimmungen suchte, musste ich die Zeile mit dem folgenden Code zu meiner neuen Tabelle hinzufügen.

output.Rows.Add(row.ItemArray) 

der vollständige Code ist wie folgt

 Dim jsonstring As String = BoxComms.WebGet("https://foo.foo.foo") 
     Dim Boxes = Newtonsoft.Json.JsonConvert.DeserializeObject(Of DataTable)(jsonstring) 
     Dim output As DataTable = Boxes.Clone() 
     Dim MyString As String = TextBox1.Text 
     MyString = MyString.Replace(" ", "") 
     Dim MyArray() As String = MyString.Split(",") 
     Dim MyList As List(Of String) = MyArray.ToList() 
     For Each value In MyList 
      For Each row As DataRow In Boxes.Rows 
       If row("stock") = value Then 
        Console.WriteLine(row("stock")) 
        output.Rows.Add(row.ItemArray) 
       End If 
      Next row 
     Next 
     BoxControl.DataGridView1.DataSource = output 
     Me.Close() 
    End If 
Verwandte Themen