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 :

Probleme de Equals, linq et casse


Sujet :

Linq

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Probleme de Equals, linq et casse
    Bonjour,

    j'ai actuellement un probleme de sensibilité à la casse dans une requete linq.

    voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    User user = (from p in entitie.Users
                     where p.StringA.Equals(string1) && p.StringB.Equals(string2)   
                     select p).FirstOrDefault();
    Imaginons que j'ai dans ma base de données un User avec StringA = "a" et StringB = "a".

    Si je rentre en valeur string1="a" et string2="A", la requête me sélectionne le User alors quelle devrait me renvoyer Null vu que la fonction Equals est censé être sensible à la casse.

    J'ai aussi testé en rajoutant StringComparison.Ordinal dans mon Equals mais le résultat est le même.

    J'utilise le framework 3.5, avec LINQ to Entities et un base SQL Server Compact Edition

    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Tu as essaye en mettant entre parenthèse l'ensemble de ta condition?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    User user = (from p in entitie.Users
                     where ( p.StringA.Equals(string1) && p.StringB.Equals(string2)   )
                     select p).FirstOrDefault();

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Malheureusement cela n'as rien changé, je trouve cela quand même bizarre comme problème...

  4. #4
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Cela doit venir de la configuration de ta base de données

  5. #5
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Est ce que ca serait pas ton SQL CE qui pose pb? Je sais que j'ai déjà eu des problemes avec LINQ et SQL CE sur le type du texte.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bon et bien, je ne sait pas, mes recherches sur le net mon indiqué une possible incompatibilité entre le type string et linq to entities mais je doute que ce soit ça car je n'en ai pas trouvé trace sur MSDN.

    Mais j'ai réussi à contourner le problème en chiffrant mes données, car je doit juste les comparer avec ce que rentre l'utilisateur, comme pour un mot de passe.

    Merci à vous en tout cas.

  7. #7
    Membre averti Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Points : 439
    Points
    439
    Par défaut
    Ta requête Linq :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    User user = (from p in entitie.Users
                     where ( p.StringA.Equals(string1) && p.StringB.Equals(string2))
                     select p).FirstOrDefault();
    Sera transformé en requête SQL, c'est donc ton serveur SQL qui va faire la comparaison des chaînes de caractères. Il faut donc vérifier que les champs de ta BDD sont sensibles à la case.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Oui effectivement j'ai regardé dans les propriétés de la base et l'attribut case sensitive était à false , merci beaucoup soad

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

Discussions similaires

  1. BigInteger, probleme avec equals()
    Par reapa_dz dans le forum Langage
    Réponses: 1
    Dernier message: 09/04/2011, 11h31
  2. probleme de casse dans l'entreprise manager sql Srv 2k
    Par poosh dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/04/2006, 08h23
  3. probleme de casse avec mandrake
    Par sebduc dans le forum Installation
    Réponses: 2
    Dernier message: 11/03/2005, 14h35
  4. Probleme d'equals to
    Par Ditch dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/10/2004, 17h19
  5. probleme de casse (sql en général)
    Par Hell dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/06/2004, 10h28

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