#region Using Directives
    
    using System;
    using System.IO;
    using System.Linq;
    using SP = Microsoft.SharePoint.Client;
    
    using System.Net;
    
    #endregion
    
    namespace SharePointClient
    {
        class Program
        {
            static void Main(string[] args)
            {
                string srcUrl = "https://aaa/bbb/ccc/";
                string destUrl = "https://aaa/bbb/ddd/";;
                System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("aaa", "ccc", "vvvv");
    
                string srcLibrary = "MySrc Library";
                string destLibrary = "MyDest Library";
    
                //copy latest full version of file
                CopyDocuments(srcUrl, destUrl, srcLibrary, destLibrary, credentials);      
            }
    
            #region Supporting Methods
    
            
            public static void CopyDocuments(string srcUrl, string destUrl, string srcLibrary, string destLibrary, System.Net.NetworkCredential credentials)
            {
                // set up the src client
                using (SP.ClientContext srcContext = new SP.ClientContext(srcUrl))
                {
                    // set up the destination 
                    using (SP.ClientContext destContext = new SP.ClientContext(destUrl))
                    {
                        srcContext.Credentials = credentials;
                        destContext.Credentials = credentials;
    
                        // get the source web
                        SP.Web srcWeb = srcContext.Web;                   
                        SP.List srcList = srcWeb.Lists.GetByTitle(srcLibrary);
                        // SP.CamlQuery query = SP.CamlQuery.CreateAllItemsQuery(5);
                        //
                        SP.CamlQuery query = new SP.CamlQuery();     
                        query.ViewXml = @"<View><Query><Where><Eq><FieldRef Name='ICD_x0020_ID' /><Value Type='Text'>6382</Value></Eq></Where></Query></View>";
                       
                        SP.ListItemCollection srcItems = srcList.GetItems(query);
                        srcContext.Load(srcItems);
                        srcContext.ExecuteQuery();
    
                        // get the destination web
                        SP.Web destWeb = destContext.Web;
                        destContext.Load(destWeb);
                        destContext.ExecuteQuery();                    
    
                        foreach (var item in srcItems)
                        {
                            try
                            {
                                if (item.FileSystemObjectType == SP.FileSystemObjectType.File)
                                {
                                    // get the first file version
                                    SP.File file = item.File;
                                    SP.FileVersionCollection versions = file.Versions;
                                    srcContext.Load(versions);
                                    srcContext.ExecuteQuery();
                                    //SP.FileVersion firstVersion = versions.OrderBy(L => L.ID).FirstOrDefault();
                                    SP.FileVersion firstVersion = versions.OrderBy(L => L.ID).Last();
                                    //
                                    foreach (SP.FileVersion _version in versions)
                                    {
                                        Console.WriteLine("Version :{0}\t", _version.VersionLabel);
                                    }
    
                                    //
                                    if (destContext.HasPendingRequest)
                                        destContext.ExecuteQuery();
                                      
                                    string filePath = Path.Combine(@srcUrl, firstVersion.Url).Replace(" ", "%20");
                                    string fileName = Path.GetFileName(filePath);
    
                                    // build new location url
                                    string nLocation = destWeb.ServerRelativeUrl.TrimEnd('/') + "/" + destLibrary.Replace(" ", "%20") + "/" + fileName;
                                   
                                    WebClient client = new System.Net.WebClient();
                                    client.Credentials = credentials;
    
                                    using (Stream fileRef = client.OpenRead(filePath))
                                    {
                                        SP.File.SaveBinaryDirect(destContext, nLocation, fileRef, true);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("File Error = " + ex.ToString());
                            }
                        }
                    }
                }
            }
    
    
    
           
            #endregion
        }
    }