public override void AddRequiredColumns(IDictionary <string, DataSource> dataSources, IDictionary <string, Type> parameterTypes, IList <string> requiredColumns) { var mappings = ColumnSet.Where(col => !col.AllColumns).ToDictionary(col => col.OutputColumn, col => col.SourceColumn); ColumnSet.Clear(); // Map the aliased names to the base names for (var i = 0; i < requiredColumns.Count; i++) { if (requiredColumns[i].StartsWith(Alias + ".")) { requiredColumns[i] = requiredColumns[i].Substring(Alias.Length + 1); if (!mappings.TryGetValue(requiredColumns[i], out var sourceCol)) { sourceCol = requiredColumns[i]; } ColumnSet.Add(new SelectColumn { SourceColumn = sourceCol, OutputColumn = requiredColumns[i] }); requiredColumns[i] = sourceCol; } } Source.AddRequiredColumns(dataSources, parameterTypes, requiredColumns); }