/// <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); }
/// <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); }