Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static void ClearListItems(SPList list)
- {
- if (list == null || list.ItemCount <= 0) return;
- DateTime startDateTime = DateTime.Now;
- string message1 = string.Format("Удаление документов в \"{0}\". Всего элементов: {1}.", list.Title,
- list.ItemCount);
- Console.WriteLine(message1);
- string batchPattern =
- String.Format(
- "<Method><SetList Scope=\"Request\">{0}</SetList><SetVar Name=\"ID\">{{0}}</SetVar><SetVar Name=\"Cmd\">Delete</SetVar><SetVar Name=\"owsfileref\">{{1}}</SetVar></Method>",
- list.ID);
- var query = new SPQuery
- {
- //ViewFieldsOnly = true,
- Folder = list.RootFolder,
- RowLimit = 50,
- ViewFields = string.Concat(new object[]
- {
- CAML.FieldRef("FileRef"),
- CAMLExtendet.FieldRef(SPBuiltInFieldId.ID),
- CAMLExtendet.FieldRef(SPBuiltInFieldId.UniqueId),
- CAML.FieldRef(NtdFields.OldId)
- }),
- Query = string.Concat(
- CAML.Where(
- CAML.And(
- CAML.Eq(CAMLExtendet.FieldRef(SPBuiltInFieldId.ContentType),
- CAML.Value("Computed", "Элемент НТД")),
- CAML.Or(
- CAML.IsNull(CAML.FieldRef(NtdFields.OldId)),
- CAML.Eq(CAMLExtendet.FieldRef(SPBuiltInFieldId.ItemChildCount), CAML.Value(0))
- )
- //CAML.Leq(CAMLExtendet.FieldRef(SPBuiltInFieldId.ID), CAML.Value(21000))
- )),
- CAML.OrderBy(new object[]
- {
- CAMLExtendet.FieldRef(SPBuiltInFieldId.ID, CAML.SortType.Ascending)
- }))
- };
- Console.WriteLine("> Перенос элементов из списка в корзину узла.");
- int deletedItemsCount = 0;
- SPListItemCollection foundListItemCollection;
- DateTime moveToRecycleBinStartDateTime = DateTime.Now;
- do
- {
- foundListItemCollection = list.GetItems(query);
- if (foundListItemCollection.Count <= 0) break;
- var batchBuilder = new StringBuilder();
- batchBuilder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Batch>");
- var uniqueIds = new List<Guid>(foundListItemCollection.Count);
- for (int i = 0; i < foundListItemCollection.Count; i++)
- {
- SPListItem item = foundListItemCollection[i];
- batchBuilder.AppendFormat(batchPattern, item.ID, item.Folder.ServerRelativeUrl);
- uniqueIds.Add(item.UniqueId);
- }
- batchBuilder.Append("</Batch>");
- string errors = list.ParentWeb.ProcessBatchData(batchBuilder.ToString());
- if (!string.IsNullOrEmpty(errors))
- {
- Console.WriteLine(">> Ошибка: {0}", errors);
- }
- //list.ParentWeb.RecycleBin.Delete(uniqueIds.ToArray());
- list.Update();
- deletedItemsCount += foundListItemCollection.Count;
- } while (foundListItemCollection.Count > 0);
- DateTime moveToRecycleBinEndDateTime = DateTime.Now;
- TimeSpan moveToRecycleBinDuration = moveToRecycleBinEndDateTime.Subtract(startDateTime);
- Console.WriteLine("> Перенесено элементов: {0} за {1}", deletedItemsCount, moveToRecycleBinDuration);
- Console.WriteLine("> Очистка корзины узла.");
- try
- {
- list.ParentWeb.RecycleBin.DeleteAll();
- }
- catch
- {
- }
- DateTime endDateTime = DateTime.Now;
- TimeSpan duration = endDateTime.Subtract(startDateTime);
- string message2 = string.Format("Удаление документов в \"{0}\" завершено за {1}", list.Title, duration);
- Console.WriteLine(message2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement