/// <summary>
    /// Method to get the index into the List{} in the base collection for an item that may or may
    /// not be in the collection. Returns -1 if not found.
    /// </summary>
    protected override int GetItemIndex(T itemToFind)
    {
        int keyToFind = GetKeyForItem(itemToFind);

        return(BaseList.FindIndex((T existingItem) =>
                                  GetKeyForItem(existingItem).Equals(keyToFind)));
    }
        public void Commit()
        {
            BaseList.AddRange(_toAdd);
            BaseList.RemoveAll(x => _toDelete.Any(y => y.TransactionalListEquals(x)));

            foreach (var item in _toUpdate)
            {
                var ind = BaseList.FindIndex(x => x.TransactionalListEquals(item));
                BaseList[ind] = item;
            }

            _toAdd.Clear();
            _toDelete.Clear();
            _toUpdate.Clear();
        }