Laden...

Index von Row bzw. single value aus DataTable bekommen?

Erstellt von GeneVorph vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.318 Views
G
GeneVorph Themenstarter:in
180 Beiträge seit 2015
vor 6 Jahren
Index von Row bzw. single value aus DataTable bekommen?

verwendetes Datenbanksystem: SQLite3

Hallo,

ich benötige Hilfe bei folgender Frage:

ich habe ein DataTable (tempTable), der die Kopie eines Tables meiner Datenbank ist. Ich möchte nun mit der Kopie arbeiten und möchte zwei strings wie folgt besetzen:

string InfoA = tempTable.Rows[?]["name"]
string InfoB = tempTable.Rows[?]["name"]

Die ? (vor allem die in meinem Kopf) sind das Problem: ich kenne zur Laufzeit die Indexwerte nicht. Bei einem SQLite-Query könnte ich mir helfen mit:

 "SELECT id FROM tempTable WHERE name = 'Fridolin'"

Es gibt auch unter C# für DataTable eine Select-Methode; leider kommt die mit WHERE nicht klar?
[Error-Message fehlender Operand nach WHERE - mein string war wie der SQLite-Beispielstring von oben aufgebaut, ist mir aber schon klar, dass man den nicht 1:1 übernehmen kann]

Noch so eine Besonderheit: jeder Eintrag ist unique. Die Strings A und B sind Bezeichnungen für Schulklassen, die in der Form immer nur genau einmal so vorkommen können.

Gruß
GeneVorph

16.834 Beiträge seit 2008
vor 6 Jahren

DataTable hat eine Select Methode.
Einfach mal in die Doku schauen, da siehst Du Beispiele der Expression.

G
GeneVorph Themenstarter:in
180 Beiträge seit 2015
vor 6 Jahren

Danke, ich kämpfe mich bereits seit heute Mittag durch die Doku 😃


DataRow[] dr = tempDataTable.Select("className = t6");

string x = (tempDataTable.Rows.IndexOf(dr[0])).ToString();

MessageBox.Show(x);

Das ist das "Beste", was ich aus zig Beispielen zusammenbasteln konnte^^
(u.a. hier )

Ich weiß, dass der Name der Klasse "t6" lautet und der Spaltenheader "className" - ich brauche einfach den Primary-Key, der unter der Spalte "id" zu finden ist.

Mit meinem Code erhalte ich eine System.Data.EvaluateException: die Spalte t6 wurde nicht gefunden. Das ist auch klar, es gibt keine Spalte "t6"; t6 ist mein Wert, den ich aus Spalte 1, Reihe 2 entgegennehme.

Ich nehme an, mit meiner Syntax stimmt etwas nicht - oder ich versuche es generell über den falschen Weg?

Über konkrete Hilfe würde ich mich sehr freuen,

Gruß
GeneVorph

5.658 Beiträge seit 2006
vor 6 Jahren

Hi GeneVorph,

in der von Abt verlinkten Doku zur Select-Methode steht folgender Hinweis:

Erstellen der filterExpression Argument verwenden die gleichen Regeln für die DataColumn-Klasse Expression Eigenschaftswert für das Erstellen von Filtern.

Dort findet man dann folgendes Beispiel:

Wenn Sie einen Ausdruck für einen Filter erstellen, schließen Sie Zeichenfolgen in einfache Anführungszeichen eingeschlossen:

"LastName = 'Jones'"

Abgesehen von der gewöhnungsbedürftigen deutschen Übersetzung, ist es gar nicht so schwierig, die Doku zu lesen 😃

Weeks of programming can save you hours of planning