Сохранить массив в таблицу данных - PullRequest
1 голос
/ 05 декабря 2011

Я сохранил значения, извлеченные из текстового файла в массив. Сейчас я пытаюсь сохранить эти значения массива в таблице данных с кодом ниже.

Проблема в том, что если первая строка имеет 20 значений, а вторая строка имеет 23 значения, то в таблице данных создается 43 ячейки, из которых последние 20 (количество столбцов 1-й строки) пусты. Это продолжается для каждого ряда. Есть ли другой способ сохранить массив в таблицу данных?

var reader = new StreamReader(File.OpenRead(@"d:\er.txt"));
var table = new DataTable("SampleTable");

while (!reader.EndOfStream)
{
    var line = reader.ReadLine().Trim();
     var values = line.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
    string[] ee = values;
    var newRow = table.NewRow();
    for (int i = 0; i < ee.Length; i++)
    {
        table.Columns.Add();
        newRow[i] = ee[i].Trim().ToString(); // like sample [0,0]
    }
    table.Rows.Add(newRow);
}

1 Ответ

2 голосов
/ 05 декабря 2011

Это потому, что вы добавляете столбец для каждого значения, которое вы добавляете в таблицу.Вам нужно добавить еще один столбец, если это необходимо.Должно быть что-то вроде следующего:

var reader = new StreamReader(File.OpenRead(@"d:\er.txt"));
var table = new DataTable("SampleTable");
int columnCount = 0;
while (!reader.EndOfStream)
{
  var line = reader.ReadLine().Trim();
  var values = line.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
  string[] ee = values;
  while (columnCount < ee.Length) 
  {
    // Only add a new column if it's required.
    table.Columns.Add();
    columnCount++;
  }
  var newRow = table.NewRow();
  for (int i = 0; i < ee.Length; i++)
  {
      newRow[i] = ee[i].Trim().ToString(); // like sample [0,0]
  }
  table.Rows.Add(newRow);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...