Précédent   Forum des professionnels en informatique > Dotnet > Accès aux données > Linq
Linq Forum d'entraide sur la manipulation de données avec Linq
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/01/2012, 14h10   #1
Membre confirmé
 
Homme Toto Browny
Développeur informatique
Inscription : mars 2008
Messages : 198
Détails du profil
Informations personnelles :
Nom : Homme Toto Browny
Âge : 31
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : mars 2008
Messages : 198
Points : 206
Points : 206
Par défaut Différence entre 2 syntaxes

Bonjour,

J'essaie de remplir un dropdownlist avec des infos contenu dans un dataset.
Code :
1
2
3
4
5
 
 Dim Lignes = ds.Tables("Lignes").AsEnumerable()
        Dim query = (From l In Lignes Order By l("cConstructeur") Select l("cConstructeur")).Distinct()
        lstConstructeurs.DataSource = query 
        lstConstructeurs.DataBind()
Ce code me retourne correctement la liste unique des constructeur

Par contre:
Code :
1
2
3
4
5
6
 
 Dim Lignes = dsBacklog.Tables("Lignes").AsEnumerable()
        Dim query = ((From l In Lignes Order By l("cConstructeur") Select New With {.key = l("cConstructeur")})).Distinct()
        lstConstructeurs.DataSource = query     
        lstConstructeurs.DataTextField = "key"
        lstConstructeurs.DataBind()
Avec ça, j'ai bien ma liste de contructeur mais ils ne sont plus unique

Quelqu'un peut m'expliquer pourquoi?
__________________
Créateur de bugs professionnel
Ma philosophie en 4 temps:
-Ce n'est qu'en essayant continuellement que l'on finit par réussir.
-Plus ça rate, plus on a de chances que ça marche.
-Ne jamais révéler tout son savoir
-...
BROWNY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 14h21   #2
Membre confirmé
 
Homme Toto Browny
Développeur informatique
Inscription : mars 2008
Messages : 198
Détails du profil
Informations personnelles :
Nom : Homme Toto Browny
Âge : 31
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : mars 2008
Messages : 198
Points : 206
Points : 206
Code :
1
2
3
 
 Dim Lignes = dsBacklog.Tables("Lignes").AsEnumerable()
        Dim query = From l In Lignes Order By l("cConstructeur") Group By key = l("cConstructeur") Into LstConstr = Group
En relisant un post qui n'a rien à voir, j'ai essayé le group by au lieu de distinct.

Solution au pb trouvé mais pourquoi?

J'aimerai bien qu'on m'explique
__________________
Créateur de bugs professionnel
Ma philosophie en 4 temps:
-Ce n'est qu'en essayant continuellement que l'on finit par réussir.
-Plus ça rate, plus on a de chances que ça marche.
-Ne jamais révéler tout son savoir
-...
BROWNY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 17h21   #3
Membre confirmé
 
Homme Toto Browny
Développeur informatique
Inscription : mars 2008
Messages : 198
Détails du profil
Informations personnelles :
Nom : Homme Toto Browny
Âge : 31
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : mars 2008
Messages : 198
Points : 206
Points : 206
Un collègue est venu volé à mon secours
le grou by en Linq, j'aime pas dans mon cas car me retourne un datarow en plus des infos utiles.
En fait un point que je n'avait pas envisagé s'est la requête de requête en Linq, soit:
Code :
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
30
31
 
 Private Class ClassRetour
        Dim _cle, _valeur As Object
        Public Property cle As Object
            Get
                Return _cle
            End Get
            Set(value As Object)
                _cle = value
            End Set
        End Property
        Public Property valeur As Object
            Get
                Return _valeur
            End Get
            Set(value As Object)
                _valeur = value
            End Set
        End Property
    End Class
 
    Private Function SelectDistinctByLinq(ByVal ds As DataSet, ByVal tbl As String, ByVal champUnique As String, Optional ByVal ChampAutre As String = "") As IEnumerable(Of ClassRetour)
        Dim Lignes = ds.Tables(tbl).AsEnumerable()
 
        If ChampAutre = "" Then
            Return (From c In ((From l In Lignes Order By l(champUnique) Select l(champUnique)).Distinct) Select New ClassRetour With {.cle = c, .valeur = ""})
        Else
            Return (From c In ((From l In Lignes Order By l(ChampAutre) Select Unique = l(champUnique), autre = l(ChampAutre)).Distinct) Select New ClassRetour With {.cle = c.Unique, .valeur = c.autre})
        End If
 
    End Function
__________________
Créateur de bugs professionnel
Ma philosophie en 4 temps:
-Ce n'est qu'en essayant continuellement que l'on finit par réussir.
-Plus ça rate, plus on a de chances que ça marche.
-Ne jamais révéler tout son savoir
-...
BROWNY est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h43.


 
 
 
 
Partenaires

Hébergement Web