Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.

SPList.GetChanges - Méthode (SPChangeQuery)

Gets the changes to the list from the change log as filtered by the specified query.

Espace de noms :  Microsoft.SharePoint
Assembly :  Microsoft.SharePoint (dans Microsoft.SharePoint.dll)

public SPChangeCollection GetChanges(
	SPChangeQuery query


Type : Microsoft.SharePoint.SPChangeQuery

The query.

Valeur renvoyée

Type : Microsoft.SharePoint.SPChangeCollection
The changes recorded for the list, filtered by the specified query. The number of changes that can be returned in a single collection is limited for performance reasons. You can adjust the maximum size of the collection by setting the FetchLimit property.

Use this method to filter changes when you are interested only in changes to particular objects, rather than all objects, or only in selected actions on particular objects. For more information about queries, see the SPChangeQuery class.


By default, the change log retains data for 60 days. You can configure the retention period by setting the ChangeLogRetentionPeriod property.

The following example is a simple console application that queries the change log for items added, updated, or deleted from a specified list. After retrieving the changes, the application examines each change and prints the date of the change, type of change, and the name of the item that has changed to the console.

using System;
using Microsoft.SharePoint;

namespace Test
   class ConsoleApp
      static void Main(string[] args)
         using (SPSite siteCollection = new SPSite("http://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;
                        item = list.GetItemByUniqueId(change.UniqueId);
                        itemName = item.Name;
                     catch (ArgumentException)
                        itemName = "Unknown";

                     Console.WriteLine("\nDate: {0}",
                     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)

                  // 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...");