Example #1
0
        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);
        }