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

Accès aux données Discussion :

[Linq to sql] Problème de requête


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyste bidouilleur
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Analyste bidouilleur

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Par défaut [Linq to sql] Problème de requête
    Bonjour a tous, je viens (encore ...) quemander un peu d'aide.

    Grand debutant en c# j'essaie d'utiliser linq to sql, mais j'ai un soucis sur une requete :

    sois avec une table mappé Table_Bidule (numero declaré en int)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    var result = (from c in Table_Bidule
                    where (c._numero.ToString()).EndsWith("0022")
                    select c._numero).Max() ;
    qui serais pour moi l'equivalent de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         SELECT max(_numero) from Table_Bidule WHERE right(_numero,4) = '0022'
    Le probleme est que si je n'ai aucun enregistrement finissant par '0022' j'ai une exception de type :

    {"La valeur null ne peut pas être assignée à un membre de type System.Int32, car il s'agit d'un type valeur non nullable."}


    Ma question est : est il possible de formuler ma requete sans avoir a gerer d'exception si je n'ai pas resultat en retour ?

    Vous remerciant d'avance pour vos lumieres ...
    Ntotor

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Par défaut
    je ne l'ai pas essayé moi même,

    mais après une simple recherche sur google, j'ai trouvé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var query = orderDataTable.AsEnumerable()
     
        .Where(dr => dr.IsNull("OrderDate") == true)
     
        .Select(dr => dr.Field<int>("OrderID"));
    Je pense que ça pourrait être exploitable dans ton cas.

    Si l'erreur est en dehors de ton code linq par contre, la je connais mieux utilise un int? plutot que un int, il sera nullable.

  3. #3
    Membre averti
    Homme Profil pro
    Analyste bidouilleur
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Analyste bidouilleur

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Par défaut
    Merci oadin, en declarant _numero en int? ca passe ...

    Je n'aurai jamais pensé à declarer une clef primaire en nullable ...

    Mille merci encore une fois,
    Ntotor

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Si LINQ a mappé ta clé primaire en int? c'est parce que sous SQL Server tu n'a pas défini ton champ en "not null".

    Ta requête a retourné null, int? ça passe car un Nullable<int> accepte des valeurs nulles ce qui n'est pas le cas de int car c'est un type valeur...

  5. #5
    Membre averti
    Homme Profil pro
    Analyste bidouilleur
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Analyste bidouilleur

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Par défaut
    Bonjour harz62 : En fait j'avais mappé manuellement la classe en déclarant le numero en int.

    Mais effectivement contrairement a un simple select qui ne renvois rien, un max renvois un null si il ne trouve pas de resultat.

    Ce qui semble expliqué pourquoi Linq m'instancie une classe nulle ...

    Nota : Ma clef est bien définis en Not null.

    Merci encore,
    Nto

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

Discussions similaires

  1. [SQL] Problème de requête et <tr>+<td>
    Par ruty dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 15/08/2006, 09h10
  2. [SQL] Problème bizarre requête date
    Par masseur dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/02/2006, 13h12
  3. [Oracle] [SQL] problème de requête
    Par joselito dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 25/01/2006, 12h55
  4. [SQL]problème de requête.
    Par shnouf dans le forum Oracle
    Réponses: 21
    Dernier message: 24/01/2006, 11h12
  5. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07

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