Строка преобразуется в DateTime при помещении его в System.Data.DataTable - PullRequest
0 голосов
/ 17 мая 2018

Я заполняю таблицу данными значениями, и одним из них является следующая строка: "1/1/1801".В моем массиве "values" этот элемент имеет тип String.Но когда я назначаю массив строке System.Data.DataTable, он волшебным образом превращается в тип datetime:

System.Data.DataTable dt = new System.Data.DataTable();
dt.Rows.Add(dt.NewRow().ItemArray = values);

Что здесь происходит, и есть ли способ избежать этого?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Вы не добавляете столбцы в таблицу данных. При прямом добавлении строки возникает ошибка времени выполнения «Входной массив длиннее, чем количество столбцов в этой таблице.»

Вы должны объявить идобавить столбец с его типом в виде строки.

            string[] values = new string[] { "1/1/1801" };
            DataTable dt = new DataTable();
            dt.Columns.Add("Date", typeof(string));          
            dt.Rows.Add(dt.NewRow().ItemArray = values);
0 голосов
/ 17 мая 2018

Вам необходимо установить тип DataColumn, чтобы таблица знала, что это string.

DataRow row; 

// Create new DataColumn, set DataType, ColumnName and add to DataTable.    
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "Whatever";
table.Columns.Add(column);

Тогда, когда вы спросите NewRow, он будет знать, какой тип данных у каждого столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...