/// <summary>
        /// Remove a work site in work site linked by identifier.
        /// </summary>
        /// <param name="currentIdentifier">identifier</param>
        /// <returns>Removed work site</returns>
        public IWorkSite RemoveWorkSite(string currentIdentifier)
        {
            IWorkSite workSite = SelectWorkSite(currentIdentifier);

            if (workSite == null)
            {
                return(null);
            }
            this._workSites.Remove(workSite);
            return(workSite);
        }
        /// <summary>
        /// Insert a work site  before the current work site.
        /// </summary>
        /// <param name="currentIdentifier">current work site</param>
        /// <param name="insertWorkSite">Insert work site</param>
        /// <returns>Insert result true or false.</returns>
        public bool InsertWorkSite(string currentIdentifier, IWorkSite insertWorkSite)
        {
            IWorkSite workSite = SelectWorkSite(currentIdentifier);

            //Linked list is null
            if (this._workSites.Count == 0)
            {
                return(false);
            }
            LinkedListNode <IWorkSite> currentNode = this._workSites.Find(workSite);

            //Not contain target work site.
            if (workSite == null)
            {
                return(false);
            }
            this._workSites.AddBefore(currentNode, insertWorkSite);
            return(true);
        }
        /// <summary>
        /// Update an existing work site.
        /// </summary>
        /// <param name="currentIdentifier">Identifier</param>
        /// <param name="newWorkSite">New work site</param>
        /// <returns>Update result true or false.</returns>
        public bool UpdateWorkSite(string currentIdentifier, IWorkSite newWorkSite)
        {
            IWorkSite oldWorkSite = SelectWorkSite(currentIdentifier);

            if (oldWorkSite == null)
            {
                return(false);
            }
            LinkedListNode <IWorkSite> currentNode = this._workSites.Find(oldWorkSite);
            LinkedListNode <IWorkSite> preNode     = currentNode.Previous;

            // First node
            if (preNode == null)
            {
                LinkedListNode <IWorkSite> nextNode = currentNode.Next;
                this._workSites.Remove(currentNode);
                this._workSites.AddBefore(nextNode, newWorkSite);
                return(true);
            }
            this._workSites.Remove(currentNode);
            this._workSites.AddAfter(preNode, newWorkSite);
            return(true);
        }
 /// <summary>
 /// Add a work site into the work site linked.
 /// </summary>
 /// <param name="workSite">The add of work site.</param>
 /// <returns>The count of the work site linked.</returns>
 public int AddWorkSite(IWorkSite workSite)
 {
     this._workSites.AddLast(workSite);
     return(this._workSites.Count);
 }