Frage zu TableAdapter, Fill, getData bzw. Befüllung einer einzelen TableRow

25/08/2009 - 16:10 von Friedrich Kölbel | Report spam
Hallo!

Vielleicht könnt Ihr mir helfen - ich finde einfach keine Lösung zu
einem an sich sicher einfachen Problem:

Ich arbeite mit dem grafischen Tool für TableAdapter (c# express 2008)
und suche eine einfachere Möglichkeit der Zuweisung von einzelnen
Zeilen, wenn ich von vorne herein weiß, dass nur eine Zeile
zurückkommen kann.

Ich habe also einige Abfragen "FillByUserID" bzw. "getDataByUserID"
und àhnliches, wo immer genau eine ROW zurückkommt, trotzdem schaffe
ich es derzeit nur jede dieser Abfragen mit einem foreach welches dann
ja ohnehin nur einmal durchlàuft zu befüllen.

So komme ich derzeit zum Ziel:

//in der ClassDefinition:
private OnTimeDataSet.tblUserLastActionRow
selectedLastAction = null;

//in einer Function:
OnTimeDataSetTableAdapters.tblUserLastActionTableAdapter
UserLastActionAdapter = new
OnTime.ClientWF.OnTimeDataSetTableAdapters.tblUserLastActionTableAdapter
();
UserLastActionAdapter.FillByUid(dataSet.tblUserLastAction,
selectedUser.ID_Mitarbeiter);

if (dataSet.tblUserLastAction.Count > 0)
{
foreach (OnTimeDataSet.tblUserLastActionRow actionsRow
in dataSet.tblUserLastAction)
{
selectedLastAction = actionsRow;
}
}

Statt dem foreach wàre mir eine Anweisung wie folgt lieber:
selectedLastAction = dataSet.tblUserLastAction.Rows(0);
das geht aber nicht und ich finde auch keine Hinweise, wie das àhnlich
gehen könnte.

Noch lieber wàre mir aber gleich so was wie:
OnTimeDataSetTableAdapters.tblUserLastActionTableAdapter
UserLastActionAdapter = new
OnTime.ClientWF.OnTimeDataSetTableAdapters.tblUserLastActionTableAdapter
();
selectedLastAction = UserLastActionAdapter.GetDataByUid
(123).Rows(0);
also ein Zweizeiler... geht so was in der Art?

Danke für Eure Hinweise,
LG Fritz Kölbel
 

Lesen sie die antworten

#1 Elmar Boye
26/08/2009 - 11:32 | Warnen spam
Hallo Friedrich,

Friedrich Kölbel schrieb:
Ich arbeite mit dem grafischen Tool für TableAdapter (c# express 2008)
und suche eine einfachere Möglichkeit der Zuweisung von einzelnen
Zeilen, wenn ich von vorne herein weiß, dass nur eine Zeile
zurückkommen kann.



Eine Methode dafür ist in den DataSet Extensions enthalten,
als Beispiel für die Northwind Customers:

private NorthwindDataSet.CustomersRow GetCustomerRow(string customerID)
{
NorthwindDataSetTableAdapters.CustomersTableAdapter adapter new NorthwindDataSetTableAdapters.CustomersTableAdapter();
NorthwindDataSet.CustomersDataTable table = adapter.GetDataByCustomerID(customerID);
return table.FirstOrDefault();
}

(der Übersichtlichkeit mit drei Anweisungen, geht auch in einer langen Bandwurmanweisung.)

Ich habe also einige Abfragen "FillByUserID" bzw. "getDataByUserID"
und àhnliches, wo immer genau eine ROW zurückkommt, trotzdem schaffe
ich es derzeit nur jede dieser Abfragen mit einem foreach welches dann
ja ohnehin nur einmal durchlàuft zu befüllen.



Wobei die obige Methode wie bei Linq üblich einen Enumerator
erstellt und daraus die erste Zeile (oder null) liefert,
also am Ende nur das Tippen spart ;-)

Gruß Elmar

Ähnliche fragen