/// <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++) { DBIndexColumn column = this.Columns[i]; DBIndexColumnInfo columnToCompare = existingIndexToCompare.Columns[i]; //если хотя бы один столбец не равен соответствующему по то му же порядковому номеру, //прекращаем сравнение и возвращаем false. if (!column.EqualsTo(columnToCompare)) { equal = false; break; } } } return(equal); }
/// <summary> /// Возвращает столбец индекса по названию столбца. /// </summary> /// <param name="columnName">Название столбца индекса.</param> /// <returns></returns> public DBIndexColumn GetColumn(string columnName) { if (string.IsNullOrEmpty(columnName)) { throw new ArgumentNullException("columnName"); } DBIndexColumn column = null; if (this.ColumnsByName.ContainsKey(columnName.ToLower())) { column = this.ColumnsByName[columnName.ToLower()]; } return(column); }