Bonjour,
j'ai un petit problème qui me trotte dans la tête.
Dans mon programme, je viens à réaliser de nombreuses fois la même requête Linq. Pour éviter cette redondance, je me suis dit que j'allais coder une méthode dans une class qui fait cette requête et qui me renvoi le résultat.
Seulement problème, je n'arrive pas à renvoyer le résultat d'une manière "correcte" qui me permet de le manipuler (le résultat) correctement par la suite.
Le code de la requête est le suivant :
Une requête pas bien compliquée qui me permet de faire des instructions après du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var query = from c in dt.AsEnumerable() select new { Adresse = c.Field<string>("Adresse"), Mnemonique = c.Field<string>("Mnémonique"), Commentaire = c.Field<string>("Commentaire") };
Seulement si je veux placer la requête LINQ dans une méthode, comment est ce que je peux retourner le "query" correctement afin de pouvoir le manipuler dans une autre classe comme je le ferait normalement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 foreach (var v in query) { if (v.Adresse != null) nAdr++; if (v.Mnemonique != null) nMne++; if (v.Commentaire != null) nCom++; }
On ne peut évidemment pas retourné un "var", le mot-clé n'est pas utilisable dans ces circonstances. J'ai essayé de retourner un EnumerableRowCollection, cela fonctionne mais lorsque dans une autre classe je stock cette EnumerableRowCollection dans un "var", je ne peux pas faire quelque chose du style:
Il ne connaît évidemment pas "Adresse".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 foreach(var vr in maQueryRecuperer) { if(vr.Adresse != null) ... }
Il y a surement une sorte de Cast() à faire ou quoi mais je ne trouve pas et je trouve ça "dommage" si je dois me retaper 5 ou 6 fois la même requête dans 5 ou 6 classes différentes d'un même programme.
J'espère avoir été assez "clair" et que quelqu'un passant par ici aura une solution à mon problème
Merci d'avance.
Partager