2011-06-17 3 views
6

J'ai une question assez basique mais ça me fait du bien !!!!Vérifier si une variable est vide C#

J'ai créé une variable qui vérifie mes vérifications de table de données pour voir si un élément utilisant mon ID de contrôle de page existe déjà. Si c'est le cas, je veux alors avertir mon utilisateur qu'il a déjà choisi une couleur de page!

Ma question est comment puis-je vérifier si cette variable est vide ou non!

var qry = from x in db.DT_Control_ColourPalette_PageColors 
        where x.PageControlID == int.Parse(HF_CPID.Value) 
        select new 
        { 
         x.PageControlID, 
        }; 

L'argument que je pense est bon?

if (qry !=null) 

Répondre

6

présomptueux qui doit retourner une seule valeur - si oui, alors:

var qry = (from x in db.DT_Control_ColourPalette_PageColors 
        where x.PageControlID == int.Parse(HF_CPID.Value) 
        select new 
        { 
         x.PageControlID, 
        }).FirstOrDefault(); 

if(qry != null) 
{ 
    // do stuff 
} 
16

Les expressions de requête ne renvoient pas de valeur nulle autant que je sache. S'il n'y a pas de résultats, vous obtenez un IQueryable<T> sans T à l'intérieur.

Vous pouvez utiliser cette place pour voir s'il y a quelque chose dans le jeu de résultats:

if (qry.Any()) 
+0

+1 parce que c'est sans aucun doute la réponse la plus directe et précise à la question posée. – Shibumi

0
var qry = from x in db.DT_Control_ColourPalette_PageColors 
        where x.PageControlID == CheckValue(HF_CPID.Value) 
        select new 
        { 
         x.PageControlID, 
        }; 


private int CheckValue(sting str) 
{ 
    if(!string.IsNullOrEmpty(str)) 
    { 
    return int.Parse(str); 
    } 
else 
    return 0;//or your default value you want to return 
} 
0

I allait écrire cela comme une réponse à une autre réponse, mais c'est vraiment trop grand pour ça. C'est plus ou moins en réponse à la réponse de Nathan.

Si le résultat est à la fois destiné à être une seule valeur et que vous obtenez cela à partir d'une seule propriété, j'ai quelques commentaires.

  1. Il n'y a aucune raison d'utiliser un objet anonyme pour sélectionner une seule valeur.
  2. Si vous vous trouvez en train d'encapsuler une instruction de style de requête entre parenthèses pour utiliser le style de point sur le résultat, vous pouvez envisager de passer au style de point. Choisissez parmi FirstOrDefault et SingleOrDefault en fonction de vos données. Parfois, il est pertinent d'affirmer implicitement que le résultat est "un ou rien" contre "le premier de quelque chose ou rien".
var result = db.DT_Control_ColourPalette_PageColors 
       .Where(x => x.PageControlID == int.Parse(HF_CPID.Value)) 
       .Select(x => x.PageControlID) 
       .SingleOrDefault(); 

if (result != null) 
{ 
    //... 
} 
+1

Si vous souhaitez placer des blocs de code dans les éléments de la liste, indentation avec 8 espaces par ligne au lieu de 4. Si vous voulez placer un bloc de code directement après une liste, je pense que vous pouvez utiliser un commentaire HTML pour les casser. – BoltClock

+0

@Bolt +1 Merci. Genre de kludgy, mais compte tenu de la magie de Markdown, je vais le prendre. – Shibumi

Questions connexes