DataColumn в DataTable не найден по имени - PullRequest
0 голосов
/ 12 октября 2018

Я читаю из файла CSV, где первая строка - строка заголовка.Все имена столбцов читаются и помещаются в таблицу следующим образом:

foreach (var item in lines[0].Split(';').Where(s => !string.IsNullOrEmpty(s)))
        {
            table.Columns.Add(item.Trim(), typeof(string));
        }

Все швы правильные, кроме случаев, когда я снова пытаюсь прочитать из таблицы.Большинство столбцов читаются, кроме одного.

Я пытался отладить и написать сообщение для этого столбца, но он НЕ входит в эту функцию (см. Изображение ниже).(Оператор if возвращает false)

enter image description here

Сейчас я попробовал все, включая проверку языкового стандарта в таблице.

Заголовокстрока:

document title;DocRef;DocRevNo;DocRevDt;RevisionObject;TransRef;Trans Status;DocOrigin;DocRefClient;RespActualDt;First TransDate;Last Update

РЕДАКТИРОВАТЬ:

Я обнаружил, что первый байт странный ...

[0]: 65279 ''
[1]: 100 'd'
[2]: 111 'o'
[3]: 99 'c'
[4]: 117 'u'
[5]: 109 'm'
[6]: 101 'e'
[7]: 110 'n'
[8]: 116 't'
[9]: 32 ' '
[10]: 116 't'
[11]: 105 'i'
[12]: 116 't'
[13]: 108 'l'
[14]: 101 'e'

Любой, ктознает, как удалить этот байт (если он существует)?

1 Ответ

0 голосов
/ 15 октября 2018

Вот решение.Начало строки содержало скрытый характер (65279).Запустив текст через эту функцию, он устранил проблему:

    protected string CleanInput(string input)
    {
        var imp = (input ?? "");
        var removeChars = new Char[] { (Char)65279 };
        imp = new String(imp.ToCharArray().Where(c => !removeChars.Contains(c)).ToArray());
        return imp;
    }
...