J'alimente un Datagridview avec une requête linq to sql.

Je souhaiterais afficher au choix : tous les articles de la table, ou seulement ceux en stock.

Pour ce faire il faudrait que je puisse invalider la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 Where grouping.Sum(Function(p) p.AS_QteSto) > 0
quand la checkbox 'EnStock' est déselectionnée.

J'ai essayé en faisant un test if..then...else..endif, en dupliquant le code et en supprimant cette seule ligne, mais j'obtiens le message :
La variable 'ArticlesEnStock' masque une variable dans un bloc englobant.
Voici le code de la requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
  Dim ArticlesEnStock = From Article In DC.F_ARTICLE _
               Join Stock In DC.F_ARTSTOCK On Stock.AR_Ref Equals Article.AR_Ref _
               Where Article.AR_Design.Contains(TextBox1.Text) _
               And Article.FA_CodeFamille.Contains(FamilleSélectionnée) _
               Order By Article.AR_Design _
               Group Stock By Article.AR_Design, Article.AR_Ref, _
               Article.AR_PrixVen, Article.FA_CodeFamille Into grouping = Group _
               Where grouping.Sum(Function(p) p.AS_QteSto) > 0 _
               Select New With {.Article = AR_Ref, .Désignation = AR_Design, _
               .Prix = AR_PrixVen, .Famille = FA_CodeFamille, _
               .Stock = grouping.Sum(Function(p) p.AS_QteSto)}
J'ai contourné le problème en créant deux requêtes linq to sql :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
        If EnStock.Checked = True Then
            DataGridView1.DataSource = ArticlesEnStock
            Total = ArticlesEnStock.Count
        Else
            DataGridView1.DataSource = ArticlesTous
            Total = ArticlesTous.Count
        End If
Mais je ne trouve pas cela très propre