Re[4]: самые элитные сортировщики гномов
От: Jack128  
Дата: 14.10.21 14:02
Оценка:
Здравствуйте, yenik, Вы писали:

J>>Посмотрел по внимательнее, а он вообще что нить кроме typeof(string) вернуть может? Чё то как то совсем плохо


Y>А переменная nbline — что она считает? Если номер строки, то для разных колонок получится разный номер строки.

Ну в принципе да, номер значащей строки. Для них важно определить первая это значащая строка или нет. По мне все это должно выглядеть примерно так: (+/- опечатки, пишу без IDE)

        private static Type GuessKind(int col, List<string[]> read)
        {
            Type previousType = null;
            foreach (var line in read)
            {
                if (col >= line.Length)
                    throw new FormatException(string.Format(Strings.LessColumnsThatExpected, nbline + 1));

                string val = line[col];

                if (string.IsNullOrEmpty(val) || string.Equals(val, "null", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }

                var suggestType = bool.TryParse(val, out _) ? typeof(bool)
                    : float.TryParse(val, out _) ? typeof(float)
                    : DateTime.TryParse(val, out _) ? typeof(DateTime)
                    : typeof(string);

                if (previousType == null) 
                {
                    previousType = suggestType;
                }
                if (previousType != suggestType || suggestType == typeof(string))
                {
                    return typeof(string);
                }
            }
            return previousType ?? typeof(string);
        }



Но на самом деле — самое страшное, что у них походу нету тестов. Ибо простейший тест бы показал, что типы колонок неверно определяются.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.