将数组存储到数据表中

时间:2011-12-05 12:50:04

标签: c# asp.net arrays datatable

我将从文本文件中检索到的值存储到数组中。现在我尝试使用以下代码将这些数组值存储到数据表中。

问题是如果第一行有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 个答案:

答案 0 :(得分:2)

这是因为您要为添加到表中的每个值添加一列。如果需要,您只需要添加另一列。以下内容应该足够了:

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);
}