Requête SPListItemCollection multiples Avec SPFieldLookupValue
Alors que les objets SPList ne soutiennent pas la vraie intégrité relationnelle en raison de la nature inhérente de stockage des données non structurées SharePoint (dans la version actuelle du moins), il est courant dans les applications d'entreprise à utiliser des types de champs de recherche sont un levier pour construire des références faibles entre les listes SharePoint. En tant que tel, les requêtes tapées collection pris de l'importance, en combinant avec LINQ méthode de chaînage permet d'écrire succincte retourne SPListItem.
Tout d'abord, nous allons faire quelques objets nécessaires proxy d'essai:
- ; curWeb SPWeb = SPContext. actuelle. Web;
- "My First List" ] ; SPList list1 = curWeb. Listes ["Ma première liste"];
- "My Second List" ] ; SPList list2 = curWeb. Listes [«Ma deuxième liste"];
Maintenant, supposons que l'exigence ouvrable suivant. Je veux parcourir list1, et correspondent à une SPField valeur retournée à une condition définie par une chaîne de caractères littérale. clause. Par la suite, le retour sera utilisé sur le SPList objet list2 dans la clause Where. Ceci est considéré dans le code suivant:
- <SPListItem> ( ) ResultSet var = list1. Items. <SPListItem> CAST ()
- i => Equals ( String . Compare ( i [ "Property To Match #1" ] . ToString ( ) , "Example String Literal" ) , 0 ) ) . Si (i => Equals (String. Comparer (i [«Pour la propriété Match # 1"]. ToString (), "String exemple littéral"), 0))
- x => list2. Items . Cast <SPListItem> ( ) . SelectMany (x => list2. Items. <SPListItem> CAST ()
- i => Equals ( String . Compare ( new SPFieldLookupValue ( x [ "Client" ] . ToString ( ) ) . LookupValue , ( string ) i [ "Property To Match #2" ] ) , 0 ) ) ) ; . Si (i = Equals> (String. Comparer ( nouvelle SPFieldLookupValue (x ["Client"]. ToString ()). LookupValue, (string) i [«Pour la propriété Match # 2"]), 0)));
with the result of the call using ToList to forces immediate execution. Le code ci-dessus peut soutenir que l'opération de coulée seconde pour la collecte tapé construire devrait être éclaté dans une variable séparée avant l'appel et le remplacement de la déclaration Cast dans SelectMany avec le résultat de l'appel à l'aide de forces ToList exécution immédiate. Meh. ![]()
5 Commentaires »
Flux RSS pour les commentaires sur ce post. TrackBack URL
































Requête [...] SPListItemCollection multiples avec [...] SPFieldLookupValue
Pingback par liens (30/04/2009 «Steve Pietrek - Tout SharePoint et Office) - 30 avril 2009 @ 16:47
[...] S'abonner à des listes SharePoint avec LINQ avril 30, 2009 - Keith Dahlby Je viens de lire encore un autre poste par Adam Buenz qui m'a fait réfléchir, cette fois au sujet de l'interrogation de plusieurs listes SharePoint. Voici le code, il est venu avec: [...]
Pingback par rejoindre les listes SharePoint avec LINQ «Solutionizing. NET - 30 avril 2009 @ 22:03
Excellent! Une grande partie du code plus succinct puis foreach boucle sur SPListItems.
Commentaire de Kirk C. - 5 mai 2009 @ 07:50
Très raisonnable, mais le débogage avec, il est difficile sans un usage excessif de la fenêtre Exécution dans VS.NET.
Commentaire de Matt T. - 5 mai 2009 @ 07:57
C'est très bon, mais le débogage, il est difficile de regarder le construction de la collection au moment de l'exécution. Je pourrais utiliser des variables locales plus ... mais le résultat final serait le même ...
Commentaire de James Fortner - 8 mai 2009 @ 07:34