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

C# Discussion :

optimisation, simplification de code sur une requete LinQ avec table jointe


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 98
    Points : 59
    Points
    59
    Par défaut optimisation, simplification de code sur une requete LinQ avec table jointe
    Bonjour à tous,
    J'ai un code qui fonctionne bien sur une requete LinQ et je voulais savoir si il était possible de l'optimiser un peu

    Contexte:
    -Une table Jonction avec entre autre, une colonne ReponseSEQ qui contiens dans chaque champs l'ID d'une autre table LesQuestions.

    -Dans cette colonne ReponseSEQ (int) il ya de nombreuses répétition du même int et ce int correspond donc à des valeurs de clé primaire de mon autre table( colonne QuestionID (int) ).

    - Après un traitement que je n'exposerai pas ici j’obtiens a partir de la table Jonction par une requete Linq le int que je recherche. Cool!

    - A partir de cette clé primaire que j'ai récupérer, je souhaite afficher dans un label la valeur contenu dans la colonne Question de ma tableLesQuestions



    je fait donc ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    int FirstQ = Soluce;  // valeur de la clé primaire (obtenu sur ma table "Jonction")
     
    // traitement sur la table LesQuestions 
     
         var toda = from p in db.LesQuestions
                         where p.QuestionID == FirstQ     // Sur la colonne qui contiend les clé primaire je recherche FirstQ
                         select p.Question;                     // affiche la valeur de la colonne Questions qui correspond
     
                        string Thevaleur = toda.First();         //  comme toda est un Iqueryable je lui demande juste le 1ere (et unique ) element        
     
                        repetour.Text = TheValeur;          // j'affiche dans mon label repetour TheValeur qui est une chaine de char (ex: Vous avez faim?)
    -Tous ce code fonctionne très bien mais je me demandais si il n'y avait pas moyen de raccourcir le nombre de ligne de code et surtout d'éviter le maintient de cette connection a la table db vu que mes 2 tables sont jointe via un "(1-----*)" entre QuestionID (clé primaire ) et la colonne ReponseSEQ et que je veut juste un affichage de la valeur d'un champs d'une colonne à partir de lsa clé primaire

  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
    Citation Envoyé par pyriame Voir le message
    raccourcir le nombre de ligne de code
    Tu peux faire comme ceci :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    repetour.Text = db.LesQuestions.First(p => p.QuestionID == FirstQ).Question;

    Citation Envoyé par pyriame Voir le message
    et surtout d'éviter le maintient de cette connection a la table db vu que mes 2 tables sont jointe via un "(1-----*)" entre QuestionID (clé primaire ) et la colonne ReponseSEQ et que je veut juste un affichage de la valeur d'un champs d'une colonne à partir de lsa clé primaire
    Vu ton code, je pense que tu utilises Entity Framework. La connexion n'est pas maintenue ouverte, donc tu n'as rien à faire de ce côté-là. Elle est ouverte pour la requête, puis fermée.
    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
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2015
    Messages : 98
    Points : 59
    Points
    59
    Par défaut
    effectivement ça raccourcis le code la lambda.

    merci bien
    bonne journée

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

Discussions similaires

  1. erreur 3201 sur une requete INSERT avec recordset
    Par forzaxelah dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/01/2012, 08h01
  2. Aide sur une requête LINQ avec left outer join
    Par jbrasselet dans le forum Linq
    Réponses: 5
    Dernier message: 12/09/2011, 09h31
  3. Affichage datagrid d'une requete linq sur EF en offline
    Par Chachnaq dans le forum Entity Framework
    Réponses: 3
    Dernier message: 07/04/2011, 23h45
  4. Aide sur une requete de sélection
    Par stephdiplo150 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/01/2004, 10h40
  5. []débogage sur une requête dasn visual basic
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 24/09/2003, 09h59

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