Beispiel #1
0
        /// <summary>
        /// Возвращает true, если сравниваемый с данным индексом существующий индекс имеет одинаковый набор столбцов,
        /// расположенных в одинаковом порядке, имеющих одинаковые направления сортировки.
        /// </summary>
        /// <param name="existingIndexToCompare">Существующий индекс таблицы, сравниваемый с данным индексом.</param>
        /// <returns></returns>
        internal bool ColumnsEqual(DBIndexInfo existingIndexToCompare)
        {
            if (existingIndexToCompare == null)
            {
                throw new ArgumentNullException("existingIndexToCompare");
            }

            //флаг равенства индексов
            bool equal = false;

            //сначала сравниваем количество столбцов
            if (this.Columns.Count == existingIndexToCompare.Columns.Count)
            {
                equal = true;
                for (int i = 0; i < this.Columns.Count; i++)
                {
                    DBIndexColumnSchema column          = this.Columns[i];
                    DBIndexColumnInfo   columnToCompare = existingIndexToCompare.Columns[i];
                    //если хотя бы один столбец не равен соответствующему по то му же порядковому номеру,
                    //прекращаем сравнение и возвращаем false.
                    if (!column.EqualsTo(columnToCompare))
                    {
                        equal = false;
                        break;
                    }
                }
            }
            return(equal);
        }
        /// <summary>
        /// Возвращает true, если сравниваемый с данным столбцом индекса существующий столбец индекса имеет одинаковое название,
        /// порядковый номер в индексе и направление сортировки.
        /// </summary>
        /// <param name="existingColumnToCompare">Существующий столбец индекса для сравнения.</param>
        /// <returns></returns>
        internal bool EqualsTo(DBIndexColumnInfo existingColumnToCompare)
        {
            if (existingColumnToCompare == null)
            {
                throw new ArgumentNullException("existingColumnToCompare");
            }

            bool equals =
                this.NameLow == existingColumnToCompare.NameLow &&
                this.Ordinal == existingColumnToCompare.Ordinal &&
                this.IsDescending == existingColumnToCompare.IsDescending;

            return(equals);
        }
Beispiel #3
0
        /// <summary>
        /// Возвращает столбец индекса по названию столбца.
        /// </summary>
        /// <param name="columnName">Название столбца индекса.</param>
        /// <returns></returns>
        public DBIndexColumnInfo GetColumn(string columnName)
        {
            if (string.IsNullOrEmpty(columnName))
            {
                throw new ArgumentNullException("columnName");
            }

            DBIndexColumnInfo column = null;

            if (this.ColumnsByName.ContainsKey(columnName.ToLower()))
            {
                column = this.ColumnsByName[columnName.ToLower()];
            }
            return(column);
        }