IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linq Discussion :

Différence entre 2 syntaxes


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut Différence entre 2 syntaxes
    Bonjour,

    J'essaie de remplir un dropdownlist avec des infos contenu dans un dataset.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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?

  2. #2
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut
    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 : 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
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Syntaxe] Différence entre . et #
    Par dominos dans le forum jQuery
    Réponses: 2
    Dernier message: 01/12/2011, 17h28
  2. Quelle différence entre ces 2 syntaxes ?
    Par Tonii dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 13/05/2011, 12h50
  3. La différence entre deux syntaxes d’instanciation
    Par infoelectronique dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 08/07/2008, 11h41
  4. [Tableaux] Différence entre deux syntaxes
    Par baggie dans le forum Langage
    Réponses: 23
    Dernier message: 30/04/2008, 14h05
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo