C# Vergleich von zwei Datatables

Pennpann

Grünschnabel
Hallo!
also ich stehe momentan vor einem Laufzeitproblem, der Vorgang an sich den ich realisieren möchte, funktioniert und liefert auch die richtigen Ergebnisse, aber es dauert einfach zu lange.

Also, ich habe eine Datatable sourceTable, diese fülle ich mit einem OdbcDataAdapter über einen Select, nehmen wir an sourceTable hat nun 3266 Einträge. Nun benötige ich aber noch 3 einzelne Nachselektierungen, über einen JOIN jeglicher Art lässt sich das leider nicht machen, da die Ergebnisse dabei nicht zu 100% korrekt sind.

Die Nachselektierungen erfolgen über 3 einzelne foreach Schleifen, diese sehen jeweils so aus:

foreach (DataRow rowOuter in sourceTable.Rows)
{
condition = rowOuter["SCHLÜSSEL"].ToString();

queryString = "SELECT schlüssel, info FROM Tabelle WHERE schlüssel = '" + condition + "'";
adapter = new OdbcDataAdapter(queryString, connection);

adapter.Fill(compareTable);
int i = compareTable.Rows.Count;
if (rowOuter["Feld1"].ToString() != "blabla" && rowOuter["Feld2"].ToString() != "" && i != 0 )
{
DataRow innerRow = compareTable.Rows[0];
rowOuter["INFO"] = innerRow["INFO"].ToString();
}
compareTable.Clear();
}

Das funktioniert wie gesagt auch, aber es folgen noch 2 weitere solche foreach Schleifen und mit einer sourceTable der größe 3266 dauert der gesamte Suchvorgang 13 Sekunden - zu lange...

Es soll also eine sourceTable mit einer compareTable verglichen werden und falls die Zeile i, in der Spalte i, aus der compareTable mit der Zeile i, in der Spalte i, aus der sourceTable übereinstimmt, soll der Inhalt der Zeile x, der Spalte x, aus der compareTable in die Zeile x, der Spalte x, aus der sourceTable kopiert werden.

Hoffe ich hab das verständlich erklärt...

Gibt es da vll eine Klasse die darauf aus ist, genau DAS zu realisieren? Ohne das ich jeden Satz der sourceTable einzeln durchlaufen muss...

Oder eine andere Idee mit der ich die Laufzeit verkürzen kann :)
 

Neue Beiträge

Zurück