Freigeben über


SPChangeCollection.Count-Eigenschaft

Ruft die Anzahl der Änderungen in der Auflistung ab.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

Syntax

'Declaration
Public Overrides ReadOnly Property Count As Integer
    Get
'Usage
Dim instance As SPChangeCollection
Dim value As Integer

value = instance.Count
public override int Count { get; }

Eigenschaftswert

Typ: System.Int32
Eine 32-Bit-Ganzzahl, die Anzahl der Änderungen angibt.

Implementiert

ICollection.Count

Beispiele

Das folgende Beispiel ist eine Konsolenanwendung, die das Änderungsprotokoll für Rollenzuweisungen führt eine Abfrage, die zu einer Website hinzugefügt wurden. Die Anwendung ruft die SPWeb.GetChanges -Methode in einer Schleife, Abrufen von Auflistungen für die sukzessive ändern, bis das Ende des Änderungsprotokolls erreicht ist. Während dieses Vorgangs virtualisierungsmethoden verbleibt die Anwendung ausführen insgesamt durch den Wert der Count -Eigenschaft der aktuellen Auflistung einer Variablen hinzufügen. Beim letzte Batch von Änderungen abgerufen wurde, wird die Anwendung die Summe an der Konsole gedruckt.

using System;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite siteCollection = new SPSite("https://localhost"))
         {
            using (SPWeb webSite = siteCollection.OpenWeb())
            {
               // Get a list.
               SPList list = webSite.Lists[0];

               // Construct a query.
               SPChangeQuery query = new SPChangeQuery(false,  // limit object types
                                                       false); // limit change types

               // Specify the object type. 
               query.Item = true;

               // Specify change types. 
               query.Add = true;
               query.Delete = true;
               query.Update = true;

               SPTimeZone timeZone = webSite.RegionalSettings.TimeZone;
               int total = 0;

               // Loop until we reach the end of the log.
               while (true)
               {
                  SPChangeCollection changes = list.GetChanges(query);

                  total += changes.Count;

                  // Print info about each change to the console.
                  foreach (SPChangeItem change in changes)
                  {
                     // Get the item name.
                     string itemName = String.Empty;
                     SPListItem item = null;
                     try
                     {
                        item = list.GetItemByUniqueId(change.UniqueId);
                        itemName = item.Name;
                     }
                     catch (ArgumentException)
                     {
                        itemName = "Unknown";
                     }

                     Console.WriteLine("\nDate: {0}",
                         timeZone.UTCToLocalTime(change.Time).ToString());
                     Console.WriteLine("Change: {0}", change.ChangeType);
                     Console.WriteLine("Item: {0}", itemName);

                  }

                  // Break out of loop if we have the last batch.
                  if (changes.Count < query.FetchLimit)
                     break;

                  // Otherwise, go get another batch.
                  query.ChangeTokenStart = changes.LastChangeToken;
               }

               Console.WriteLine("\nTotal of {0} changes to {1} list", total, list.Title);
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}
Imports System
Imports Microsoft.SharePoint

Module ConsoleApp
   Sub Main()
      Using siteCollection As SPSite = New SPSite("https://localhost")
         Using webSite As SPWeb = siteCollection.RootWeb

            ' Construct a query
            Dim query As New SPChangeQuery(False, False)

            ' object type
            query.Web = True

            ' change type 
            query.RoleAssignmentAdd = True

            Dim total As Long = 0
            While True

               Dim changes As SPChangeCollection = webSite.GetChanges(query)

               total += changes.Count

               ' Break out of the loop when we fetch the last batch of changes
               If changes.Count < query.FetchLimit Then
                  Exit While
               End If

               ' Go get another batch of changes starting where we left off
               query.ChangeTokenStart = changes.LastChangeToken

            End While

            Console.WriteLine("{0} role assignments added", total)

         End Using
      End Using

      Console.Write(vbCrLf + "Press ENTER to continue...")
      Console.ReadLine()

   End Sub
End Module

Siehe auch

Referenz

SPChangeCollection Klasse

SPChangeCollection-Member

Microsoft.SharePoint-Namespace

Weitere Ressourcen

Using the Change Log