private void Finished_ColumnStats(ColumnStatsRequest req, ColumnSetStats results)
        {
            _columns = results;
            ShowUsedColumnStats();

            DoSOM();
        }
        private void Exception_ColumnStats(ColumnStatsRequest req, Exception ex)
        {
            _columns = new ColumnSetStats(req.Names, ex.Message);
            pnlColumns.Children.Clear();

            DoSOM();
        }
        private static ColumnSetStats DoWork_ColumnStats(ColumnStatsRequest req, CancellationToken cancel)
        {
            var indices = GetIndices(req.Names, req.Results.ColumnNames);
            if (indices.Item2 != null)
            {
                return new ColumnSetStats(req.Names, indices.Item2);
            }

            ColumnStats[] columns = new ColumnStats[req.Names.Length];

            for (int cntr = 0; cntr < req.Names.Length; cntr++)
            {
                int index = indices.Item1[cntr];
                string[] values = req.Results.Results.
                    Select(o => o[index]).
                    ToArray();

                SOMFieldStats stats = SelfOrganizingMapsDB.GetFieldStats(values);
                SOMFieldStats textStats = null;

                switch (stats.FieldType)
                {
                    case SOMFieldType.AlphaNumeric:
                    case SOMFieldType.AnyText:
                        textStats = stats;
                        break;

                    default:
                        textStats = SelfOrganizingMapsDB.GetFieldStats(values, SOMFieldType.AnyText);
                        break;
                }

                columns[cntr] = new ColumnStats(req.Names[cntr], index, stats, textStats);
            }

            return new ColumnSetStats(columns);
        }