DataColumn.Expression

DaFridge Messages postés 22 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 4 janvier 2008 - 16 nov. 2007 à 18:35
DaFridge Messages postés 22 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 4 janvier 2008 - 16 nov. 2007 à 21:40
Bonjour.

Je souhaite créer une colonne dans un DataTable avec une expression qui permettrait de calculer quelque chose comme une moyenne mobile d'une autre colonne.
J'ai donc une instruction  pour créer ma colonne :
dataSet.Tables["Moyennes"].Columns.Add(

"Moyenne", System.
Single, [???]
);

Comme si dans Excel j'avais par exemple dans la case B3 "=(A1+A2)/2", et que je l'"étirais" à toute la colonne B (en ayant des valeurs dans la colonne A).

Est-il possible de faire ça en C# à l'aide d'une DataColumn.Expression ?

Merci d'avance.

8 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
16 nov. 2007 à 19:18
Salut,
Oui c'est possible.
Une petit exemple:

DataTable dt =
new
DataTable();
dt.Columns.Add(
"test1",
typeof(
double));
dt.Columns.Add(
"test2",
typeof(
int));
dt.Rows.Add(
new
object[] { 1.2, 4 });
dt.Rows.Add(
new
object[] { 5.4, 2 });
dt.Rows.Add(
new
object[] { 4.3, 7 });
dt.Columns.Add(
"sum",
typeof(
int),
"test1 * test2");

this.dataGridView.DataSource = dt;

Article plus complet:
http://blogs.developpeur.org/themit/archive/2004/10/27/3086.aspx

<hr />
-My Blog-
0
DaFridge Messages postés 22 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 4 janvier 2008
16 nov. 2007 à 21:00
Merci pour la réponse, mais je pense que je me suis mal exprimé.
J'ai retrouvé le calcul exact que je souhaite faire.

Admettons que j'ai deux colonnes col1 et col2.

La colonne col2 me permet de faire des calculs à partir des valeurs de la colonne col1 et de ses propres valeurs.

Je souhaite obtenir (shématiquement)
col2[i] = col2[i-1] - 2 * (col2[i-1] - col2[i]) / (col1.Count + 1)

Et tout ce que j'ai trouvé sur les expressions, ce sont des calculs comme col3 = col1 [opérateur] col2, ce qui ne me permet pas de faire ça.
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
16 nov. 2007 à 21:07
Euh, c'est quoi  ' i '  ??
Tu peux jeter un oeil sur MSDN aussi:
http://msdn2.microsoft.com/en-us/library/system.data.datacolumn.expression(vs.71).aspx

<hr />
-My Blog-
0
DaFridge Messages postés 22 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 4 janvier 2008
16 nov. 2007 à 21:17
i est un compteur quelconque, utilisé par exemple dans une boucle for (i = 0; i < col2.Count; i++)

Je suis déjà passé plusieurs fois sur MSDN, mais sans résultat... :(

Je crois que je vais être obligé d'extraire les valeurs dont j'ai besoin pour faire les calculs.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
16 nov. 2007 à 21:25
L'expression est un string qui va être parsé...
Il va pouvoir en déduire certaines fonctions (voire MSDN), le nom des columns, mais je ne vois pas comment il ferait pour des customs variables...

<hr />
-My Blog-
0
DaFridge Messages postés 22 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 4 janvier 2008
16 nov. 2007 à 21:29
Il n'y a pas moyen de sélectionner une case précise ou un ensemble de case précise de la même ligne ou de la même colonne dans les DataColumn.Expressions ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
16 nov. 2007 à 21:35
Je dirais que non, mais je ne pourrais pas te l'assurer à 100%...

<hr />
-My Blog-
0
DaFridge Messages postés 22 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 4 janvier 2008
16 nov. 2007 à 21:40
Ok, je vais voir une dernière fois sur le Net, et ensuite je le ferai "à la main".
Merci pour ton aide.
0
Rejoignez-nous