private static void PrepareAndThrowUnknownColumnExceptionMessage(string indetifier, ISchemaColumn[] columns) { var library = new TransitionLibrary(); var candidates = new StringBuilder(); var candidatesColumns = columns.Where(col => library.Soundex(col.ColumnName) == library.Soundex(indetifier) || library.LevenshteinDistance(col.ColumnName, indetifier).Value < 3).ToArray(); for (int i = 0; i < candidatesColumns.Length - 1; i++) { ISchemaColumn candidate = candidatesColumns[i]; candidates.Append(candidate.ColumnName); candidates.Append(", "); } if (candidatesColumns.Length > 0) { candidates.Append(candidatesColumns[candidatesColumns.Length - 1].ColumnName); throw new UnknownColumnException($"Column '{indetifier}' could not be found. Did you mean to use [{candidates.ToString()}]?"); } throw new UnknownColumnException($"Column {indetifier} could not be found."); }