/// <summary>
        /// Check table contains this record or not
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="record"></param>
        /// <returns></returns>
        public bool Contains(string tableName, object record)
        {
            //
            // Initialize result
            bool result = false;


            //
            // First, try to extract main information of record
            RecordSnapshot recordSnapshot = this.GetRecordSnapshot(tableName, record);
            TableSnapshot  tableSnapshot  = this._listTableSnapshot.FirstOrDefault(x => x.TableName.Equals(tableName));

            if (tableSnapshot != null)
            {
                result = tableSnapshot.Contains(recordSnapshot);
                if (result == false)
                {
                    result = tableSnapshot.IsDuplicatedUniqueColumn(recordSnapshot);
                }
            }


            //
            // Return result
            return(result);
        }
        /// <summary>
        /// Get records
        /// With exist in both table
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public static TableSnapshot GetCommonRecord(TableSnapshot first, TableSnapshot second)
        {
            //
            // Initialize result
            TableSnapshot result = new TableSnapshot(first.TableName);

            //
            // Try to compare two table snapshot
            // Get common record from both table
            foreach (RecordSnapshot record in first._listRecordSnapshot)
            {
                if (second.Contains(record))
                {
                    result.Add(record);
                }
            }


            //
            // Return result
            return(result);
        }
        /// <summary>
        /// Get records
        /// With exist in both table
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public static TableSnapshot GetCommonRecord(TableSnapshot first, TableSnapshot second)
        {
            //
            // Initialize result
            TableSnapshot result = new TableSnapshot(first.TableName);

            //
            // Try to compare two table snapshot
            // Get common record from both table
            foreach (RecordSnapshot record in first._listRecordSnapshot)
            {
                if (second.Contains(record))
                {
                    result.Add(record);
                }
            }

            //
            // Return result
            return result;
        }