Получите последнюю зарегистрированную версию (документ) документа из библиотеки документов SP 2010.

У меня есть библиотека документов с включенным управлением версиями в SharePoint 2010. Я хочу получить файл, который возвращен, и для любого извлеченного файла мне нужно получить его последнюю зарегистрированную версию (документ). Я использую объектную модель на стороне сервера С# в SharePoint 2010. Кто-нибудь может мне помочь?


person Kalpesh    schedule 03.01.2019    source источник
comment
Было бы здорово, если бы вы могли предоставить минимально воспроизводимый пример вашей попытки.   -  person mjwills    schedule 03.01.2019


Ответы (1)


Это может помочь. Он будет перебирать все элементы в списке, и если элемент извлечен, он найдет последнюю опубликованную версию.

using Microsoft.SharePoint;
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        using (SPSite site = new SPSite("https://sharepoint.domain.com"))
        using (SPWeb web = site.OpenWeb())
        {
            SPList list = web.GetList($"{web.ServerRelativeUrl.TrimEnd('/')}/DocumentLibrary");
            SPListItemCollection items = list.GetItems(new SPQuery());

            foreach (SPListItem item in items)
            {
                object checkedOutTo = item[SPBuiltInFieldId.CheckoutUser];
                if (checkedOutTo == null)
                {
                    // Latest version
                    Console.WriteLine($"{item.ID} | {item.Versions[0].VersionLabel}");

                    // Here are bytes of the file itself
                    byte[] bytes = item.File.OpenBinary();
                }
                else
                {
                    // Find latest published version
                    SPFileVersion version = item.File.Versions
                        .Cast<SPFileVersion>()
                        .OrderByDescending(v => v.ID)
                        .Where(v => v.Level == SPFileLevel.Published)
                        .FirstOrDefault();

                    if (version != null)
                    {
                        Console.WriteLine($"{item.ID} | {version.VersionLabel} | {checkedOutTo}");

                        // Here are bytes of the file itself
                        byte[] bytes = version.OpenBinary();
                    }
                    else
                        Console.WriteLine($"{item.ID} | No published version | {checkedOutTo}");
                }
            }
        }
    }
}
person Lukas Nespor    schedule 03.01.2019
comment
Привет, Лукас, спасибо за ценный ответ! Это даст мне только номер версии, тогда как мне нужен фактический документ с этим номером версии. - person Kalpesh; 04.01.2019
comment
Спасибо Лукас за ценную помощь! Цените свое время и помогайте! - person Kalpesh; 04.01.2019