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 :

Simplification d'une requête


Sujet :

Linq

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut Simplification d'une requête
    Bonjour à tous.

    Je voudrais simplifier le code suivant :

    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
     If niveau = "SEC" Then
     
                resultat = (From tCompetition In _context.Competition
                                Join tEquipe In _context.Equipe On tCompetition.IdCompetition Equals tEquipe.Competition.IdCompetition
                                Join tPersonne In _context.Personne On tPersonne.IdPersonne Equals tEquipe.Responsable.IdPersonne
                                Join tEcole In _context.Ecole On tEcole.IdEcole Equals tPersonne.Ecole.IdEcole
                                Where tCompetition.IdCompetition = idCompetition
                                Select NomEcole = tEcole.Nom,
                                        Equipe = tEquipe,
                                        Participants = tEquipe.Membres).GroupBy(Function(x) x.NomEcole).ToList()
     
            Else
     
                resultat = (From tCompetition In _context.Competition
                            Join tEquipe In _context.Equipe On tCompetition.IdCompetition Equals tEquipe.Competition.IdCompetition
                            Join tPersonne In _context.Personne On tPersonne.IdPersonne Equals tEquipe.Capitaine.IdPersonne
                            Join tEcole In _context.Ecole On tEcole.IdEcole Equals tPersonne.Ecole.IdEcole
                            Where tCompetition.IdCompetition = idCompetition
                            Select NomEcole = tEcole.Nom,
                                    Equipe = tEquipe,
                                    Participants = tEquipe.Membres).GroupBy(Function(x) x.NomEcole).ToList()
     
            End If
    Il y a seulement cette ligne qui change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tEquipe.Capitaine.IdPersonne
    Il faudrait que je puisse faire un Or. Vous savez comment je peux réaliser ça ?

    merci

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Avec LinQ on ne peut faire que des equijoins. Pour faire ce que tu souhaites faire il faut utiliser plusieurs clauses From et ajouter une clause Where. Ca donnera quelque chose comme ceci :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    resultat = (From tCompetition In _context.Competition
    	From tPersonne In _context.Personne
    		Where tPersonne.IdPersonne = tEquipe.Capitaine.IdPersonne Or tPersonne.IdPersonne = tEquipe.Responsable.IdPersonne
    	Join tEquipe In _context.Equipe On tCompetition.IdCompetition Equals tEquipe.Competition.IdCompetition
    	Join tEcole In _context.Ecole On tEcole.IdEcole Equals tPersonne.Ecole.IdEcole
    	Where tCompetition.IdCompetition = idCompetition
    	Select NomEcole = tEcole.Nom,
    			Equipe = tEquipe,
    			Participants = tEquipe.Membres).GroupBy(Function(x) x.NomEcole).ToList()
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 56
    Points
    56
    Par défaut
    Excellent merci !

Discussions similaires

  1. Simplification d'une requête
    Par Poulain dans le forum Requêtes
    Réponses: 5
    Dernier message: 21/09/2010, 00h25
  2. Simplification d'une requête
    Par edogawa dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/07/2010, 07h56
  3. simplification d'une requête
    Par Jasmine80 dans le forum Requêtes
    Réponses: 12
    Dernier message: 20/04/2009, 21h45
  4. Simplification d'une requête SQL
    Par nicou50 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 07/09/2006, 06h37
  5. Simplification d'une requête UNION
    Par eautret dans le forum Langage SQL
    Réponses: 6
    Dernier message: 18/01/2005, 14h51

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