ADO.Net - 将DataRow添加到DataTable时截断列数据

时间:2011-09-15 20:02:51

标签: c# ado.net datatable

这是我在Stackoverflow上的第一篇文章。

我正在从平面文件(逗号分隔)中读取数百万行,并迭代每个读取行,然后迭代每行的每一列。每列的迭代是允许执行用户定义的转换,默认值,删除特殊字符等。目前的实施非常有效。

数据读取分批完成20k。当我正在处理读取行时,我在内存中的DataTable上发出一个NewRow()调用。然后我开始迭代每一列来擦除它们的值。我正在尝试在处理行列时尽量减少。

我的问题是这个。如果从平面文件中读取的值(在本例中为文本)长于目标DataTables DataColumn的MaxLength,则会在发出以下内容时收到异常说明:

dataTable.Rows.Add(newRow);

有没有办法告诉ADO.Net(或我的内存中DataTable)截断数据而不是抱怨?

同样,我可以轻松地在循环中添加逻辑来为我执行此检查/截断,但是当您处理数百万行数据时,这些事情会增加。

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

var newRow = dataTable.NewRow();

...
...

if(YourText.Length < ColumnMaxLength)
{
  newRow["YourLimitedColumnName"] = YourText;
}
else
{
  newRow["YourLimitedColumnName"] = YourText.Substring(0, ColumnMaxLength);
}

...
...

dataTable.Rows.Add(newRow);