unable to cast object of type ‘system.string’ to type ‘microsoft.sharepoint.spfieldlookup’?

I am trying to add the lookup value from the splistitem. I am getting the error as : unable to cast object of type ‘system.string’ to type ‘microsoft.sharepoint.spfieldlookup’ I have tried the below code:

 private void LookedUPReference(SPList Client, SPList Post)     {         SPFieldLookup oldlookup = (SPFieldLookup)Client.Fields["Title"];         SPList oldList = Client.ParentWeb.Lists[new Guid(oldlookup.LookupList)];          Dictionary<int, SPFieldLookup> dTitle = new Dictionary<int, SPFieldLookup>();         foreach (SPListItem item in Client.Items)         {             dTitle.Add((int)item["ID"],(SPFieldLookup) item["Title"]);         }         Client.Fields.Delete(Client.Fields["Title"].InternalName);         Client.Update();         Client.Fields.Delete(Client.Fields["Title:ID"].InternalName);         Client.Update();         Client.Fields.AddLookup("Title", Post.ID, false);         Client.Update();           SPFieldLookup lkp = (SPFieldLookup)Client.Fields["Title"];          lkp.LookupField = Post.Fields["Nom"].InternalName;         lkp.Update();          SPFieldLookup lkpIdTitle = (SPFieldLookup)Client.Fields.CreateNewField(SPFieldType.Lookup.ToString(), "Title:ID");         lkpIdTitle.LookupList = lkp.LookupList;         lkpIdTitle.PrimaryFieldId = lkp.Id.ToString();         lkpIdTitle.LookupField = Post.Fields["ID"].InternalName;         lkpIdTitle.IsRelationship = false;         lkpIdTitle.ReadOnlyField = true;         lkpIdTitle.Direction = lkp.Direction;            Client.Update();            foreach (SPListItem item in Client.Items)         {              SPFieldLookup oldlookupOLD  ;             if (dTitle.TryGetValue((int)item["ID"], out oldlookupOLD))             {                  SPFieldLookupValue fieldLookupValue = new SPFieldLookupValue(oldlookupOLD.ToString());                 //string lookupValue = oldList.GetItemById(fieldLookupValue.LookupId).GetFieldValueAsString("Name");                   string lookupValue = string.Empty;                 try                 {                     lookupValue = oldList.GetItemById(fieldLookupValue.LookupId).GetFieldValueAsString("Name");                 }                 catch (Exception)                 {                      lookupValue = Post.GetItemById(fieldLookupValue.LookupId).GetFieldValueAsString("Name");                  }                 SPListItem TitleItem = Post.FindItemsContainValue(lkp.LookupField, lookupValue)[0];                  item[lkp.InternalName] = new SPFieldLookupValue(TitleItem.ID, TitleItem.Title);                  item.Update();             }