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 :

jointure et null Linq to sql


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut jointure et null Linq to sql
    salut a tous,
    je viens de faire la jointure de 3 tables. la troisiemme pour le moment n'a pas de valeur, je veux mettre ses champs qui sont sélectionné a la valeur 0. et je ne connait pas l'equivalent de Isnull en linq to sql.

    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
     var req_recherche_eleve =
                from E in ltsql_encaissement_scolarite.Eleves.DefaultIfEmpty()
                join S in ltsql_encaissement_scolarite.scolarite on E.Classe equals S.clasee into jointure1
                from S in jointure1.DefaultIfEmpty()
                join R in ltsql_encaissement_scolarite.Reglements on E.Code_eleve equals R.Code_eleve into jointure2
                from R in jointure2.DefaultIfEmpty()
                where (E.Code_eleve==txt_Code_eleve.Text)
                select new {    E.Code_eleve, E.Nom_eleve, E.Prenoms_eleve, E.Classe, S.clasee, R.Reste_a_payer, S.Montant_total,
                                 R.Montant_reglement };// voici l'element qui n'a pas de valeur
                foreach ( var identification in req_recherche_eleve) // vs génére une erreur a ce niveau
                {
                    txt_Nom_eleve.Text = identification.Nom_eleve;
                    txt_Prenoms_eleve.Text = identification.Prenoms_eleve;
                    txt_Classe.Text = identification.Classe;
                    txt_Reste_a_payer.Text = identification.Reste_a_payer.ToString();
                    txt_Montant_total.Text = identification.Montant_total.ToString();
                    txt_montant_paye.Text = identification.Montant_reglement .ToString();
                }
    merci de m'aider svp

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Normalement, ISNull est remplacé par l'opérateur ??.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    var x = y ?? 0;

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    var x = y ?? 0;
    +1
    Dans ton cas la partie Select de ta requête doit ressembler à ça :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select new {    E.Code_eleve, E.Nom_eleve, E.Prenoms_eleve, E.Classe, S.clasee, R.Reste_a_payer, S.Montant_total,
                                MontantReglement = R.Montant_reglement ?? 0}

  4. #4
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    salut a tous
    Merci pour votre intervention,
    visual studio affiche un message d'erreur ou il dit:
    ?? 0 ne peut pas etre appliqué au type décimal et int.
    je rapelle que R.Montant_reglement est de type decimal.
    merci de votre aide

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par solo190 Voir le message
    salut a tous
    Merci pour votre intervention,
    visual studio affiche un message d'erreur ou il dit: ?? 0 ne peut pas etre appliqué au type décimal et int.
    je rapelle que R.Montant_reglement est de type decimal.
    merci de votre aide
    Simple il fallait juste convertir le type en décimal et la méthode la plus simple est de remplacer le 0 par 0.00m (le m miniscule fait parti)

  6. #6
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    s'il te plait soit plus explicite, je ne comprend pas.
    montre moi un exemple et je ferais le reste

  7. #7
    Invité
    Invité(e)
    Par défaut
    le code suivant
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    R.Montant_reglement ?? 0.00m
    parce que l'opérande ?? ne s'applique qu'aux types Référence alors Montant_reglement est de type valeur. Logique.

    le code suivant
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ontantReglement = R.Montant_reglement.HasValue ?  R.Montant_reglement.Value : 0.00m
    devrait marcher parce que je m'attendais à ce que la propriété soit de type Nullable<Decimal> mais ce n'est pas le cas. Sinon j'aimerais bien savoir le type de cette propriété.

    Enfin je t'ai mis le code qui est
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    MontantReglement = R.Montant_reglement == null ? 0.00m : R.Montant_reglement
    et ça marche. Ce qui n'est pas normal parce que ce code est équivalent au précédent.

    Comme je t'ai dit donnes-moi le type excat de la propriété Montant_reglement pour plus d'explications.

  8. #8
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    Dans ma Bd sql serveur il est de type monney, mais lorsque je l'importe avec Linq to sql , il le voit comme un décimal.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Je vois c'est ta jointure externe utilisée dans ta requête qui fais en sorte que ça soit null. Donc je me demande pourquoi il ne l'a pas mis en type Nullable<Decimal>. Bon là on est même niveau. On se fait signe si l'un de nous deux trouve le pourquoi.

  10. #10
    Membre éclairé Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Par défaut
    Bien Recu,
    on se fait signe!

  11. #11
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Dans ma Bd sql serveur il est de type monney, mais lorsque je l'importe avec Linq to sql , il le voit comme un décimal.
    Le type Money en SQL SERVER n'est qu'un ALIAS du type décimal...

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

Discussions similaires

  1. [Débutant] LINQ to SQL, jointure avec une valeur potentiellement null
    Par gunth dans le forum Linq
    Réponses: 5
    Dernier message: 23/07/2013, 09h57
  2. [Débutant] Linq to sql pour la jointure
    Par Hlama dans le forum C#
    Réponses: 6
    Dernier message: 29/05/2012, 12h25
  3. Réponses: 10
    Dernier message: 27/05/2010, 16h53
  4. Jointure linq to sql
    Par annesolac dans le forum Linq
    Réponses: 0
    Dernier message: 22/05/2009, 10h22
  5. [LINQ to SQL] Gérer des valeurs NULL
    Par vito12345 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 15/08/2008, 23h20

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