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

标签 c# ado.net datatable

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

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

数据的读取以 20k 为单位进行。当我处理读取的行时,我对内存中的 DataTable 发出 NewRow() 调用。然后我开始迭代每一列以删除它们的值。当我处理行列时,我试图尽可能地减少。

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

dataTable.Rows.Add(newRow);

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

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

最佳答案

像这样的东西应该可以工作:

var newRow = dataTable.NewRow();

...
...

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

...
...

dataTable.Rows.Add(newRow);

关于c# - ADO.Net - 将 DataRow 添加到 DataTable 时截断列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7436809/

相关文章:

c# - 如何使用c#将数据写入mysql数据库并忽略列

c# - DataTable 问题列的 ADO.Net DataType

javascript - 表格特定列的范围搜索过滤器

python - 使用 style_data_conditionals 的 Dash DataTable 单独突出显示效果不寻常

c# - c#中的数据表到XML,其中一些项目是列表<object>

c# - 在 LINQ 中,如何对来自 .Include() 的数据执行 .OrderBy()?

c# - 替代字典进行快速键查找?

c# - ASP.NET Core 1.0.0 Nuget 依赖问题

c# - 从 DataAdapter 填充 DataTable - 选择了错误的列作为主键

c# - ADO.NET + 大量插入 + Excel + C# = "A bad time"吗?