2017-05-11 4 views
-9

Ici, j'utilise la clause where pour les entiers. C'est possible ? Comme je n'obtiens pas le résultat requis.In C# où la clause in fonctionne pour les entiers?

ProjectDetail objProjlst1 = _ProjectContext.ProjectDetails.Where(x => x.Phase == Phase).SingleOrDefault(); 

    if(objProjlst1!= null){ 
    return true; 
    } 

    else 
    { 
    return false; 
    } 

La phase est un nombre entier. Je reçois une erreur « objet Object » quand je lance toute application web

+0

Oui, il est possible d'utiliser des entiers. Tout ce que vous avez à faire est de vous assurer que votre expression à l'intérieur retourne une valeur booléenne. –

+6

Eh bien, qu'est-ce que * vous * obtenez? Il n'y a pas assez d'informations ici pour vous aider. –

+1

Deux possibilités, soit votre 'ProjectDetails' ne contient pas un entier correspondant à' Phase', ou il en contient plus d'un qui correspond. – helrich

Répondre

-2

Si _ProjectContext.ProjectDetails a plus d'un élément de phase, il émettra une exception.

Mais s'il n'y a aucun élément correspondant alors il retournera 0

var numbers = new[] {1 ,2, 3}; 

numbers.Where(x => x == 6).SingleOrDefault(); // returns 0 

parce

default(int) == 0 
+0

Dans le cas d'OP, il renverra 'null' puisque' ProjectDetail' est un type de référence. – juharr

+0

oui :) vous avez raison –

-2

Il devrait fonctionner, juste debuge et vérifier soit le dossier int existe dans db ou non, essayez cependant avec

.FirstOrDefault() insted de .SingleOrDefault() car il donnera une erreur exceptionnelle s'il y a plusieurs résultats;

+0

laissez-moi essayer ceci – beginner

+1

.FirstOrDefault() retournera également 0 si la collection n'a aucun élément correspondant –

+1

Essayez '.Any' comme suggéré par deux personnes différentes et il y aura moins de code. – SQLMason