namespace Strata.SqlTools.SqlServer.ExpressionFactory.Query; public static class QueryConfigExtensions { /// /// Gets all column ids referenced by this /// /// /// public static int[] GetAllColumnIds(this QueryConfig queryConfig) { return queryConfig.Values.SelectMany(value => value.CalculationDataColumnIds) .Union(queryConfig.Values.SelectMany(x => x.FilterGroups.SelectMany(y => y.GetValidFilters().Select(f => f.DataColumnId)))) .Union(queryConfig.Rows.Select(row => row.DataColumnId)) // FilterGroup.Filters is pre-filtered at construction (see FilterGroup.cs JsonConstructor); no GetValidFilters() equivalent is needed here. .Union(queryConfig.FilterGroups.SelectMany(filterGroup => filterGroup.Filters.Select(filter => filter.DataColumnId))) .ToArray(); } }