Programowo pobierz ListItemVersion przy użyciu modelu obiektu klienta SharePoint 2010

Mam scenariusz, w którym muszę przenieść wszystkie moje dane na liście SharePoint 2010 (name = "VersionTestList") do bazy danych serwera SQL. Ponieważ wersjonowanie jest włączone na liście, chcę również przenieść szczegóły poprzedniej wersji. W każdym razie byłem w stanie przenieść najnowszy element, ale niestety nie jestem w stanie uzyskać danych poprzedniej wersji. Próbowałem tego za pomocą modelu obiektów klienta i mogłem pobrać wersje, ale nie mogłem uzyskać listy ListItem odpowiedniej wersji. Poniżej znajduje się kod, który próbowałem do tej pory i daj mi rękę w rozwiązaniu tego problemu.

Również biorę wersję ListItem w następujący sposób:

string path = web.ServerRelativeUrl + "/Lists/VersionTestTable/1_.000";
File file = web.GetFileByServerRelativeUrl(path);
clientContext.Load(file, item=>item.ListItemAllFields);
FileVersionCollection versions = file.Versions;
clientContext.Load(versions);
oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));
clientContext.ExecuteQuery();

Cały mój kod wygląda następująco:

class Program
{
    static void Main(string[] args)
    {
        GetVersionsUsingCOM();
    }
    public static void GetVersionsUsingCOM()
    {
        File file;
        FileVersionCollection versions;
        IEnumerable<Microsoft.SharePoint.Client.FileVersion> oldVersions;
        ClientContext clientContext = new ClientContex("http://server:1200/test/Poc");
        Web web = clientContext.Web;
        clientContext.Load(web);
        clientContext.ExecuteQuery();

        string path = web.ServerRelativeUrl + "/Lists/VersionTestTable/1_.000";
        file = web.GetFileByServerRelativeUrl(path);
        clientContext.Load(file, item=>item.ListItemAllFields);
        //clientContext.ExecuteQuery();

        versions = file.Versions;
        clientContext.Load(versions);
        oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));
        clientContext.ExecuteQuery();

        if (oldVersions != null)
        {
            foreach (Microsoft.SharePoint.Client.FileVersion _version in oldVersions)
            {
                int count=0;
                Console.WriteLine(_version.CheckInComment);
                Console.WriteLine("Version : {0}", _version.VersionLabel);

          //// Working fine till here but unable to get the version details from version.Url
                string versionItemUrl = web.ServerRelativeUrl +"/" + _version.Url;
                File oldFile = web.GetFileByServerRelativeUrl(versionItemUrl);
                clientContext.Load(oldFile, f=>f.ListItemAllFields);
                clientContext.ExecuteQuery();

                Console.WriteLine(oldFile.ListItemAllFields["Name"]);
                count++;
            }
            oldVersions = null;
        }
        Console.ReadLine();

    }
}

questionAnswers(3)

yourAnswerToTheQuestion