Linq: Vérifier si la chaîne de la colonne a une valeur (c'est à dire. n'est pas null ou vide)
Ne sais pas si c'est la meilleure façon d'atteindre cet objectif dans Linq.
Je suis en train de sélectionner les enregistrements de Contact dans CRM 2011 où le EMailAddress1 contient une valeur. Les requêtes suivantes, j'ai essayé à la fois causé des exceptions:
Where c.EMailAddress1 > ""
Where Not String.IsNullOrEmpty(c.EMailAddress1)
Alors j'ai fini par essayer ce qui semble fonctionner ok:
Where Not c.EMailAddress1.Equals(String.Empty) _
And Not c.EMailAddress1.Equals(Nothing)
Mais je ne suis pas certain si c'est la méthode la plus efficace.. il ne me semble pas très élégant. Est-il plus propre façon de vérifier si une chaîne de caractères de la colonne a une valeur?
lorsque vous utilisez de la Ficelle.IsNullOrEmpty, ce qui est l'exception-vous que vous obtenez?
ce type de données est EMailAddress1?
l'exception est "Invalide" où " la condition. Une entité membre est en invoquant une défaillance de la propriété ou de la méthode.". Type de données Chaîne de caractères.
Je veux dire le type de données dans la base de données
Ah, vous ne savez pas, c'est une installation à distance de CRM 2011, mais je présume qu'il est de type nvarchar.
ce type de données est EMailAddress1?
l'exception est "Invalide" où " la condition. Une entité membre est en invoquant une défaillance de la propriété ou de la méthode.". Type de données Chaîne de caractères.
Je veux dire le type de données dans la base de données
Ah, vous ne savez pas, c'est une installation à distance de CRM 2011, mais je présume qu'il est de type nvarchar.
OriginalL'auteur ingredient_15939 | 2012-07-31
Vous devez vous connecter pour publier un commentaire.
Comme l'a dit ici Linq to CRM est vraiment limitée. C'est pourquoi vous ne pouvez pas utiliser des chaînes de caractères.IsNullOrEmpty.
Cependant, vous devriez essayer de le faire :
Lorsqu'un champ est vide, il a la valeur null dans la base de données (vide). Cette ligne doit alors être assez pour votre cas.
Ce qui concerne,
Kévin
En fait, si l'utilisateur laisser vide le champ, il sera NULLE. Vous ne serez jamais trouvé aucun résultat si vous regardez après la chaîne vide par l'utilisation de linq. Donc "IsNot Nothing" devrait être suffisant.
Est-ce juste une Linq comportement? De nombreux dessins de base de données d'éviter nullable colonnes. Ce n'est pas sûr CRM 2011 dans ce cas. Mais en supposant une colonne dans la base de données est de type VarChar not NULL, serait linq puis traiter null et "" (vide) différemment?
C'est un CRM 2011 comportement. Si un champ est vide (= chaîne de caractères vide), CRM va le mettre à NULL dans la base de données. Au sein de la base de données CRM, toutes les colonnes sont nullable, l'exigence est géré par le CRM programme lui-même, et pas à la DB. C'est pourquoi vous n'avez pas à traiter des chaînes vides. Ils n'existent pas dans CRM.
Cool, merci pour ça!
OriginalL'auteur Kévin Rapaille
viens de faire :
Où(Fonction(s).E-mail <> "") = travaux! Null et des chaînes Vides ne sont pas Sélectionnés.
OriginalL'auteur Habib