public static IEnumerable<TableData> FromTableSets(IEnumerable<IEnumerable<TableData>> datasets)
        {
            var tables = new Dictionary<string, MergedTableData>();

            foreach (var partition in datasets)
            {
                foreach (var table in partition)
                {
                    MergedTableData current;
                    if (!tables.TryGetValue(table.Name, out current))
                    {
                        tables.Add(table.Name, current = new MergedTableData(table.Schema));
                    }
                    current.Sources.Add(table);
                }
            }

            return tables.Values;
        }
        public static IEnumerable <TableData> FromTableSets(IEnumerable <IEnumerable <TableData> > datasets)
        {
            var tables = new Dictionary <string, MergedTableData>();

            foreach (var partition in datasets)
            {
                foreach (var table in partition)
                {
                    MergedTableData current;
                    if (!tables.TryGetValue(table.Name, out current))
                    {
                        tables.Add(table.Name, current = new MergedTableData(table.Schema));
                    }
                    current.Sources.Add(table);
                }
            }

            return(tables.Values);
        }