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

VB.NET Discussion :

Erreur LINQ La séquence ne contient aucun élément


Sujet :

VB.NET

  1. #1
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut Erreur LINQ La séquence ne contient aucun élément
    Bonjour,
    je ne sais pas tester l'expression avant de l'assigner
    La requête est à priori bonne puisque je boucle dessus sans problème sauf si aucun élément n'est trouvé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim sphereMin = (From TV In Me.tarifsVerres Where TV.codeVerre = V.codeVerre Select (TV.sphereDebut)).Min()
    Une erreur est remontée sur cette ligne
    InvalidOperationException
    La séquence ne contient aucun élément.
    Merci de m'aiguiller

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut
    peut etre ici

  3. #3
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,
    Je pense que c'est le .Min() qui pose pb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim sphereMin as Int32
    Dim sphere = (From TV In Me.tarifsVerres Where TV.codeVerre = V.codeVerre Select (TV.sphereDebut))
    if Not isNothing(Sphere) Then
         sphereMin = sphere.Min()
    Else
        sphereMin = ??
    End If
    Edit : çà tient surement dans le linq avec une expression ternaire IF(condition, exp true, exp false) ou IIF(condition,exp true,exp false)

  4. #4
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Conformément à la documentation Min lève un InvalidOperationException, lorsque sa source ne contient aucun élément. (logique, quel serait le minimum d'une séquence vide ? 0, -1, -Infini ...)

    Il te faut donc t'assurer qu'il y ait au moins un élément, par exemple avec Any pour vérifier que la séquence est non vide ou en utilisant une des surcharges (selon le besoin) de DefaultIfEmpty pour "récupérer" une valeur par défaut le cas échéant

    @dkmix: il ne faut JAMAIS utilliser la fonction IIf et TOUJOURS lui préférer l'opérateur If
    En effet la première existe surtout de manière historique (utilisée dans VB6 par exemple) et présente le souci majeur, de ne pas être court-circuitante, c'est à dire que dans tous les cas la partie "Si Vrai" et "Si Faux" sont toutes deux évaluées.
    Autrement dit (recopié de la documentation) If (divisor <> 0, number / divisor, 0) fonctionnera correctement mais IIf (divisor <> 0, number / divisor, 0) plantera avec une DivideByZeroException
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  5. #5
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    Merci à tous de vous intéresser à mon problème et merci de vos réponses
    Finalement, la méthode Any me satisfait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim lstTarifs = (From TV In Me.tarifsVerres Where TV.codeVerre = V.codeVerre).ToList
    If Not lstTarifs.Any Then
        okForInsert = False
    Else
        Dim sphereMin = (From TV In Me.tarifsVerres Where TV.codeVerre = V.codeVerre Select (TV.sphereDebut)).Min()
        Dim sphereMax = (From TV In Me.tarifsVerres Where TV.codeVerre = V.codeVerre Select (TV.sphereFin)).Max()
        Dim cylMax = (From TV In Me.tarifsVerres Where TV.codeVerre = V.codeVerre Select (TV.cylindreFin)).Max()
        V32.plageMini = sphereMin
        V32.plageMaxi = SphereMax
        V32.plageMaxiT = cylMax
    End If
    Le problème est donc résolu.

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

Discussions similaires

  1. Erreur "Le rapport ne contient aucune table."
    Par bhs2009 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 18/08/2009, 15h43
  2. Masquer une vue qui ne contient aucun élément
    Par jca38 dans le forum SharePoint
    Réponses: 1
    Dernier message: 12/07/2009, 14h50
  3. Réponses: 2
    Dernier message: 19/01/2007, 11h53
  4. Cette page contient des éléments sécurisés et non sécurisés
    Par bigsister dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 26/04/2005, 14h01
  5. Réponses: 1
    Dernier message: 06/04/2005, 15h09

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