2010-06-08 6 views
0

J'utilise N-Hibernate et une classe/table appelée boxersIQueryable Où ne fonctionne

J'ai aussi une table de perspective qui indique utiliser si le boxeur est une perspective. (Ce tableau est une colonne de seulement la boxersID)

donc je veux obtenir tous les boxeurs qui sont des perspectives (ce qui signifie tous les boxeurs qui ont là id dans la table perspectives)

Public static IQueryable<Boxer> IsProspect(this IQueryable<Boxer> query) 
{ 
return query.Where(x => x.Prospect != null); 
} 

ce ne marche pas rogner sur mon liste des boxeurs aux boxeurs qui sont prospect ... pourtant si je débogue et regarde n'importe quel boxer il aura vrai ou faux à côté de chacun correctement ...

Pourquoi la clause where n'est-elle pas correctement découpée dans la liste?

Répondre

0

Je recommanderais de se débarrasser de la table des perspectives et d'ajouter une colonne à la table des Boxers appelée quelque chose comme 'IsProspect' qui est juste un booléen de quelque sorte. Cela simplifiera votre schéma de base de données et vos mappages NHibernate. À part cela, vérifier que x.Prospect n'est pas nul renverra tous Boxer s

Au lieu de cela, utilisez cette ligne:

return query.Where(x => x.Prospect); 

juste vérifier que la valeur booléenne est vraie, au lieu de vérifier que ce n'est pas nulle.

+0

Je voudrais prefere ne pas mettre la perspective dans la table car il est pas la même chose votre ligne de code (déplacer le « ! = Null ») échoue comme ne peut pas faire un objet de Prospect == bool – Steve

+0

@Steve Je pense qu'Aaron suppose (et c'est ainsi que je le lis aussi) que 'x.Prospect' est une propriété' bool' de 'Boxer'. C'est aussi la raison pour laquelle votre méthode retourne tous les objets 'Boxer' - ni' true' ni 'false' n'est 'null'. – Jay

+0

Je suppose que je ne vois pas pourquoi votre code est tel qu'il est. Quel est exactement l'objet 'Prospect'? Si elle n'a rien de plus qu'une référence à un 'Boxer', alors c'est une complexité supplémentaire inutile pour autant que je puisse voir. Cependant, si le vrai/faux que vous voyez "à côté de chacun correctement" est dans le 'Prospect', alors vous devriez' renvoyer query.Where (x => x.Prospect! = Null && x.Prospect. IsProspect) '. – Aaron

Questions connexes