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

Framework .NET Discussion :

[LINQ] Problème avec Queryable.First


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut [LINQ] Problème avec Queryable.First
    Salut,

    J'ai remarqué un truc assez bizarre avec la méthode d'extension First<T>... quand aucun élément ne satisfait le prédicat passé en paramètre, l'appel à la méthode ne se termine jamais !

    J'ai le code suivant:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    User user = db.Users.First<User>(u => u.UserName == credentials.Name);
    (la source de données est une base SQL Server, la DAL est générée par le designer LINQ)

    Je m'attendais à ce que ça renvoie null si aucun élément n'était trouvé, mais au lieu de ça, l'exécution reste bloquée sur l'appel à First.

    Je précise que, bien sûr, si un élément satisfaisant le prédicat est trouvé, ça marche nickel...

    La doc n'indique pas quel est le comportement prévu si aucun élément est trouvé, et je n'ai rien trouvé sur Google.

    Avez-vous déjà rencontré ce problème, et trouvé une solution ? Evidemment je pourrais d'abord vérifier l'existence de l'utilisateur, mais ça fait 2 requêtes quand une seule devrait suffire, donc j'aimerais mieux trouver autre chose...

    Je vais poster sur le forum de Microsoft pour voir ce qu'ils en pensent...

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bon, je viens de voir qu'il y a aussi une méthode FirstOrDefault, ou encore mieux, Single ou SingleOrDefault (fonctionnellement plus adapté).
    N'empêche, je ne vois pas trop la logique du comportement de First... quel est l'intérêt de bloquer indéfiniment ???

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Tiens, c'est marrant: je m'attendais aussi à ce que null soit renvoyé si aucun résultat ne correspondait.

    Je serais curieux de connaitre la réponse sur le forum US

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je posterai la réponse si y en a une...
    En attendant, mon problème est résolu

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Etrange: je viens de tester ceci avec du LINQ To Objects

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var tmp = customers.First<Customer>(c => c.CustomerID == "AAAA");
    Et il me jette bien une exception:

    Sequence contains no matching element

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bizarre ça... c'est peut-être spécifique à LINQ to SQL ?
    En tous cas je pense que c'est un bug...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/02/2010, 20h57
  2. Linq: problême avec une requete tout bete
    Par ChapiBoulo dans le forum Débuter
    Réponses: 1
    Dernier message: 21/05/2009, 12h57
  3. Problème avec les méthodes Linq to SQL en C#
    Par Lennox dans le forum Silverlight
    Réponses: 7
    Dernier message: 05/09/2008, 18h53
  4. Réponses: 7
    Dernier message: 10/02/2008, 11h56

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