Mehrere SPListItemCollection Abfrage mit SPFieldLookupValue

Während SPList Objekte nicht aufrecht relationale Integrität aufgrund der inhärenten Natur von unstrukturierten SharePoint Datenspeicherung (In der aktuellen Version zumindest), ist es gemeinsame Anträge innerhalb von Geschäftsprozessen zu nutzen Typen Lookup Feld sind ansetzten, um Listen zu bauen schwache Verweise zwischen SharePoint. Als solche typisierte Auflistung Abfragen wichtig geworden, kombiniert mit LINQ-Methode ermöglicht es uns, die Verkettung liefert prägnante SPListItem schreiben.

Erstens, wir machen einige erforderlichen Test-Proxy-Objekte:

C #:
  1. ; SPWeb curWeb = SPContext. Übliche. Web;
  2. "My First List" ] ; SPList list1 = curWeb. Listen ["My First List"];
  3. "My Second List" ] ; SPList list2 = curWeb. Listen ["My Second List"];

Nun, nehmen wir an den folgenden Geschäftsfeldern Anforderung. Ich möchte zu durchlaufen list1 und entsprechen einem zurückgegebenen SPField Wert in einen String Zustand wörtlichen Sinne ein. clause. Anschließend erfolgt die Rücksendung innerhalb von Objekt verwendet werden auf der list2 SPList der Where-Klausel. Dies ist in den folgenden Codeausschnitt in Betracht gezogen:

C #:
  1. <SPListItem> ( ) var = resultSet list1. Items. <SPListItem> Cast ()
  2. i => Equals ( String . Compare ( i [ "Property To Match #1" ] . ToString ( ) , "Example String Literal" ) , 0 ) ) . Wo (i => Equals (String. Compare (i ["-Eigenschaft auf 1 Match #"]. ToString (), "Beispiel String Literal"), 0))
  3. x => list2. Items . Cast <SPListItem> ( ) . SelectMany (x => list2. Items. <SPListItem> Cast ()
  4. i => Equals ( String . Compare ( new SPFieldLookupValue ( x [ "Client" ] . ToString ( ) ) . LookupValue , ( string ) i [ "Property To Match #2" ] ) , 0 ) ) ) ; . Wo (i => Equals (String. Compare ( neue SPFieldLookupValue (x ["Client"]. ToString ()). LookupValue, (string) i ["Property Match # 2"]), 0)));

with the result of the call using ToList to forces immediate execution. Der obige Code ist fraglich, dass das zweite Casting für den Betrieb typisierte Auflistung bauen variabel sein sollten separate ausgebrochen in einen vor dem Aufruf und anstelle der Cast-Anweisung innerhalb SelectMany mit dem Ergebnis des Gesprächs mit ToList Kräfte sofortige Ausführung. Meh. :)

  • Share / Bookmark

5 Kommentare »

  1. [...] Mehrere SPListItemCollection Abfrage mit SPFieldLookupValue [...]

    Pingback von Links (2009.04.30 «Steve Pietrek - Alles SharePoint und Office) - 30. April 2009 @ 16.47 Uhr

  2. [...] Join SharePoint-Listen mit LINQ 30. April 2009 - Keith Dahlby Ich habe gerade gelesen noch ein Beitrag von Adam Buenz, dass mir gedacht habe, dieses Mal zum Abfragen von mehreren SharePoint-Listen. Hier ist der Code kam er oben mit: [...]

    Pingback von Join SharePoint-Listen mit LINQ «Solutionizing. NET - 30 April 2009 @ 10.03 Uhr

  3. Ausgezeichnet! Viel mehr prägnante Code dann foreach Schleifen über SPListItems.

    Kommentar von Kirk C. - 5. Mai 2009 @ 07.50 Uhr

  4. Pretty angemessen, aber es ist mit Debugging ohne übermäßige Nutzung der Direkt-Fenster in VS.NET schwierig.

    Kommentar von Matt T. - 5. Mai 2009 @ 07.57 Uhr

  5. Das ist ziemlich gut, aber das Debuggen ist es schwierig, bei der Sammlung Gebäude während der Laufzeit zu suchen. Ich könnte mehr lokale Variablen verwenden ... aber das Endergebnis wäre das gleiche ...

    Kommentar von James Fortner - 8. Mai 2009 @ 07.34 Uhr

RSS-Feed für Kommentare zu diesem Beitrag. TrackBack-URL

Hinterlasse einen Kommentar