[C#] Dataset - Find - Delegate
Bonjour à tous,
Je dois récupérer un DataRow dans un DataSet associé à la valeur du champ d'un autre DataRow d'un autre DataSet et procède ainsi :
Code:
1 2 3 4 5 6 7 8
|
...
// Retrieving corresponding header
foreach (DataRow hrow in DsList.Find(delegate(DataSet d) { return getReceptionHeader(d, row["PSYNCKEY"].ToString()); }).Tables[0].Rows)
{
this.SetReceptionAttributes(headerAttributes, hrow);
}
... |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
private static bool getReceptionHeader(DataSet ds, String synckey)
{
if (ds.DataSetName.Equals("Reception"))
{
bool resp = false;
foreach (DataRow row in ds.Tables[0].Rows)
{
resp = row["SYNCKEY_MMW"].Equals(synckey);
if (resp == true) break;
}
return resp;
}
else { return false; }
} |
Cependant et même si ce code semble fonctionner, je me demande s'il n'y a pas de méthode plus adaptée.
Davantage d'explications : il s'agit d'une liste de DataSet dont l'un possède les entêtes de réception et l'autre des postes dont le champ PSYNCKEY correspond au champ SYNCKEY_MMW du premier. Ainsi se décompose le modèle de données.
Dans cette méthode, j'aggrège les entêtes et les postes pour composer des messages XML à synchroniser avec le Middleware.
Sincèrement,
Ludovic