Hello,

Je rentre directement dans le vif du sujet avec un bout de code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
    Private Sub btnFilter_Click(sender As Object, e As EventArgs)
        Dim data = (From d In Promo.DTO.DetailsDemo
                    Select Id = d.Id, Department = d.CodeDemo.Department, CodeDemo = d.CodeDemo, Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType
                    From d In Promo.DTO.DetailsDepartment
                    Select Id = d.Id, Department = d.Department, CodeDemo = New PROMO_DTO.CodeDemo(0, "0000", "", "", Nothing, Nothing, Nothing, Nothing, Nothing, False), Percentage = d.Percentage, Description = d.Description, Note = d.Note, ListType = d.ListType).ToList
 
 
        If ckbDepartment.Checked Then
            data = (From d In data
                    Where d.Department.Id = CShort(cbDepartment.SelectedValue)
                    Select d).ToList
        End If
 
        If ckbConcession.Checked Then
            data = (From d In data
                    Where d.CodeDemo.Id = CInt(cbConcession.SelectedValue)
                    Select d).ToList
        End If
 
        If ckbPercent.Checked Then
            data = (From d In data
                    Where d.Percentage = nudPercent.Value
                    Select d).ToList
        End If
 
        dgvDemo.DataSource = data
 
    End Sub
J'ai donc data qui est wrapper autour d'objets similaire mais différents (l'un possède une propriété CodeDemo et l'autre non). Or j'ai besoin de donner la possibilité à l'utilisateur de filtrer le contenu de ce wrapper suivant 3 critères qui peuvent se combiner.

J'ai donc utiliser des checkboxes pour activer ou non le critère de filtrage et si c'est coché, je fais le filtre.

A priori, je trouve ça plutôt propre mais j'aurais voulu avoir votre avis.

Aussi, je cherche une manière plus élégante pour boucher le trou que devrait occuper la propriété CodeDemo dans la 2e selection de mon wrapper...
Actuellement, j'ai donc ceci (je remets le code du dessus) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
        Dim data = (From d In Promo.DTO.DetailsDemo
                     Select Id = d.Id, Department = d.CodeDemo.Department, CodeDemo =  d.CodeDemo, Percentage = d.Percentage, Description = d.Description, Note  = d.Note, ListType = d.ListType
                    From d In Promo.DTO.DetailsDepartment
                     Select Id = d.Id, Department = d.Department, CodeDemo = New  PROMO_DTO.CodeDemo(0, "0000", "", "", Nothing, Nothing, Nothing,  Nothing, Nothing, False), Percentage = d.Percentage, Description =  d.Description, Note = d.Note, ListType = d.ListType).ToList
C'est donc le New PROMO_DTO.CodeDemo(0, "0000", "", "", Nothing, Nothing, Nothing, Nothing, Nothing, False) qui m'ennuie. Je peux mettre nothing et le wrapper est valide mais la propriété du type anonyme est alors de type Object et non pas de type CodeDemo et du coup, pas moyen de faire le filtre (à moins que je puisse faire un cast au moment du filtrage... je viens d'y penser).
J'aimerais assez ne pas devoir créer un dummy CodeDemo dans ce second select.

Une idée ?? (j'ai tenté la recherche sur le net mais vu que j'ignore les mots clefs à utiliser, je n'ai pas trouvé mon bonheur)