首页 文章

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

提问于
浏览
2

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

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

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

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

dataTable.Rows.Add(newRow);

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

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

1 回答

  • 0

    这样的事情应该有效:

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

相关问题