我将从文本文件中检索到的值存储到数组中。现在我尝试使用以下代码将这些数组值存储到数据表中。
问题是如果第一行有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);
}
答案 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);
}