2010-11-05 7 views
0

Je le code suivant:requête LINQ Null vérification retour erreur bool

var qry = from sv in Context.DocStore_SearchValues 
      where sv.Category == category 
      select sv; 
    return qry.FirstOrDefault() != null; 

Je reçois ce message:

Impossible de créer une valeur constante de de type « SSS.Model. Suburban.DocStore_Category '. Seuls les types primitifs ('tels que Int32, String et Guid') sont pris en charge dans ce contexte.

Comment vérifier la valeur null? J'ai essayé comme une chaîne et j'ai reçu le même message:

return string.IsNullOrEmpty (qry.FirstOrDefault(). ToString());

Des suggestions?

Merci!

Eroc

Répondre

3

Vous ne pouvez pas utiliser un type non primitif dans la clause where.

changer pour quelque chose comme

where sv.Category.Name == someString 
+0

Merci! Je suis allé avec: var qry = à partir de sv dans Context.DocStore_SearchValues ​​ où sv.Category.Name == category.Name select sv; – ErocM

0

Comment l'utilisation de l'interface IEquatable mis en œuvre pour la classe de catégorie pour faire le point d'encapsuler ce que vous essayez de faire dans la requête avec un type non primitif à l'intérieur du objet lui-même? Il ressemble à ceci:

var qry = from sv in Context.DocStore_SearchValues 
     where sv.Category.Equals(yourCategory) == true 
     select sv; 


return qry.Any(); 

Ensuite, vous utilisez une classe de fichier partiel pour étendre la classe de catégorie pour mettre en œuvre la logique de comparaison.

0

vous voudriez généralement faire quelque chose comme où category.Id == id au lieu de comparer les chaînes, imo