Dans CAML je peux interroger SharePoint Listitems à l'aide de la "Contient"-élément, mais il n'y a pas de "ne contient pas"-élément que je pourrais utiliser.
Alors, quelle est la meilleure façon d'obtenir les éléments qui ne contiennent pas une chaîne de caractères? Est-il une meilleure façon que d'une boucle sur chaque élément?
OriginalL'auteur user4531 | 2008-12-04
La même restriction s'applique à BeginWith. Je ne connais pas de bonne solution, malheureusement. Ce que vous pourriez faire: Ne Contient-Requête, boucle sur chaque élément et obtenir l'Id, puis faire un autre grand de la requête pour "ID NotEqual 1 ou ID NotEqual 2 ou ID NotEqual 3......" Depuis ID est indexé autant que je sache, qui devrait avoir un impact plus faible sur la base de données, mais encore, elle sent vraiment mauvais.
Pour petite liste, il n'est pas question, pour les grandes listes que j'avais utiliser le générateur de profils SQL Server pour voir quel est l'impact.
Une colonne calculée ne fonctionne pas toujours, par exemple, si vous êtes un filtrage sur les Créé domaine ou dans d'autres domaines qui font partie des types de contenu, à ceux qui tout simplement semblent pas disponible dans la liste des Colonnes.
OriginalL'auteur Michael Stum
Essayez d'utiliser une colonne calculée pour tenir compte de la valeur que vous êtes à la recherche par la création de la valeur opposée.
Par exemple, dire que la colonne est appelée IsCritical. Ensuite, ajoutez la colonne comme un "OUI" ou " NON " et la formule que
Puis dans votre requête CAML
Un 0 dans cette requête un peu reflète "n'Est Pas Critique". Cependant, je ne suis pas sûr de ce que la performance peut être plutôt que d'avoir un native CAML "Pas Contenir" qui, malheureusement, n'existe pas.
Voir Aussi CAML Requête de Schéma sur le site MSDN
OriginalL'auteur Alex Nolasco
Ce problème avec "Contient" et "BeginsWith' qui me dérange également. J'espère que dans la prochaine version de Sharepoint caml sera étendu à l'être véritable outil de travail, pas juste une pierre sur notre jambe.
La façon dont je le fais, c'est de spécifier une requête, autant que possible, puis de filtrer les lignes qui ne correspondent pas aux conditions dans le code C#. Il est assez moche parfois, comme il est parfois nécessaire de traiter 100 lignes à la fin, avec 1 résultat que les conditions de match.
OriginalL'auteur drax
@drax: espérons CAML s'en va - période. Il est certainement l'un des pires aspects de la SP de la programmation.
CAML comme une Liste de Définition de langue (ONET.xml) est tout à fait utilisable. CAML comme un SQL de Remplacement est une blague, et même pas une bonne idée.
OriginalL'auteur
Essayez De Ne Pas Comprend
OriginalL'auteur Nate