Die Auswahl DataRow mit Linq in c#
Wie kann ich dies kürzer ist die Verwendung von Linq?
int id = 0;
foreach (DataRow dr in tableClientTableAdapter1.GetData())
{
if (dr[0].ToString() == txtClientName.Text)
{
id = Convert.ToInt16(dr[1]);
break;
}
}
Ich habe versucht, mit diesem
var a = tableClientTableAdapter1.GetData().Cast<DataRow>().Where(cName => cName[0].ToString() == txtClientName.Text);
MessageBox.Show(a[1].ToString());
Aber bekam ich diese Fehlermeldung:
Fehler 1 kann Nicht angewendet werden, der Indizierung mit [] auf einen Ausdruck vom Typ " System.Daten.EnumerableRowCollection' C:\Users\[email protected]\Desktop[Final][GlobalTek] Monitoring-System[GlobalTek] Monitoring-System\xfrmProjectAwarding.cs 89 37 [GlobalTek] Monitoring-System
Jede Hilfe!!!!
InformationsquelleAutor Vincent Dagpin | 2011-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
var a =
ist ein Sequenz von DataRow-Objekte, die Sie versuchen, zu behandeln, als ein einzelnes Objekt. Wenn Sie wünschen, ein Ergebnis, verwenden Sie eine derauf die Abfrage, mit dem Unterschied, dass Ihre Erwartung für das Ergebnis. Wenn mehr als ein Element vorhanden sein können, aber du bist nur daran interessiert, die erste von Ihnen, gehen mit
First()
. Wenn nur ein Element sollte passen und es ein Fehler ist, wenn es mehr werden, gehen mitSingle()
. Wenn, in jedem Szenario, es ist möglich, dass es keine übereinstimmt, verwenden Sie das entsprechende*OrDefault()
version.Für zukünftige Leser. I ~~denke~~ es war einer fehlt ".Zeilen" (nach dem .GetData(). Beispiel : MyDataTable.Zeilen.Cast<DataRow - >().FirstOrDefault();
InformationsquelleAutor Anthony Pegram
Versuchen Sie dies:
Aber seien Sie gewarnt, es wird eine exception werfen wenn keine übereinstimmung vorhanden ist. Wenn das ist eine Möglichkeit, Sie dies tun sollten:
InformationsquelleAutor Joel Coehoorn
Wenn Sie gehen, um mit der cast-Methode sollte man außerdem wählen Sie im Feld Methode.
ToList() Hinzugefügt, wenn Sie möchten, um Zugriff über index
Wenn Sie nur das erste match kann man ersetzen, wo mit der Ersten/FirstOrDefault je nachdem, wie Sie wollen, null behandelt
InformationsquelleAutor Gary.S