Envoyé par
Tommy57
Mais c'est effectivement pour faire la jonction entre différentes table que je souhaite utiliser linq.
Jointure, pas jonction
Mais dans ce cas il faudrait que tu précises un peu ce que tu veux, parce que je ne peux pas deviner ton cas d'utilisation...
[quote=Tommy57;7462992]Cependant, pourrais-tu me donner qlq explication sur ton code?[/QUOTE
Chaque bloc "if" vérifie si l'utilisateur a sélectionné une valeur dans un ComboBox, et si c'est le cas, ajoute le filtre correspondant à la requête
Envoyé par
Tommy57
tu fais la requête en deux partie, pourquoi?
Comment ça en 2 parties ? Le 2e morceau de code que j'ai posté n'est pas une 2e partie, c'est juste pour montrer à quoi pourrait ressembler la requête finale après avoir ajouté tous les filtres
Envoyé par
Tommy57
Que retourne exactement les boucles if?
Euh... rien du tout. Comme je l'ai dit plus haut, chaque bloc if ajoute un filtre si nécessaire.
Envoyé par
Tommy57
je ne comprend pas le code à l'interieur des () dans les boucles if, pourrais-tu m’éclairer un peu?
C'est-à-dire ? Il y a plusieurs parenthèses, desquelles parles-tu ?
Je suppose que c'est l'appel à la méthode Where qui te pose problème ? Le paramètre de Where est un prédicat, c'est à dire une fonction qui renvoie true ou false pour l'objet qu'on lui passe en paramètre. Ici, ce prédicat est exprimé sous forme d'une expression lambda (une sorte de fonction anonyme)
Quand j'écris ça :
query = query.Where(row => row.Field<string>("Nom") == nom);
C'est en quelque sorte un raccourci pour ça :
1 2 3 4 5 6 7
| query = query.Where(FiltreParNom);
...
bool FiltreParNom(DataRow row)
{
return row.Field<string>("Nom") == nom;
} |
(en fait il y a une différence un peu subtile, mais je ne vais pas rentrer dans ce genre de détail pour l'instant)
Quant à la partie row.Field<string>("Nom"), ça renvoie la valeur de type string de la colonne "Nom" de la ligne row.
En VB.NET, les blocs if ressembleraient à ça :
1 2 3 4
| If comboBoxNom.SelectedValue IsNot Nothing Then
Dim nom As String = CType(comboBoxNom.SelectedValue, String)
query = query.Where(Function(row) row.Field(Of String)("Nom") = nom)
End If |
PS: il n'y a pas de "boucle if"... Une boucle c'est pour répéter un bloc de code, ce qui n'est clairement pas le cas de if
Partager