1

我编写了经过良好性能测试的代码。

在代码中,我拆分了一个逗号分隔的字符串并将其分配给 DataTable Row 的 ItemArray。

DataRow dr = dt.NewRow();
var itemArray = processedUliValue.Split(',');
dr.ItemArray = itemArray;
dt.Rows.Add(dr);

稍后在代码中,我将根据选定的列名将这些 itemArray 值转换为整数

如果任何一列为空,我就会遇到异常。

因此,我正在寻找在分配 itemArray 时将空值设置为 null ,我尝试在逗号分隔的字符串中使用 DBNull.Value 但它没有采用 null,我也尝试了 null 但这也不起作用。

有没有办法使用这个逗号分隔的字符串将 null 分配给 ItemArray?

4

2 回答 2

4

看起来您尝试存储的列DbNull.Value不允许空值。这对我有用:

        var dt = new DataTable
        {
            Columns =
                {
                    new DataColumn("Id", typeof(int)),
                    new DataColumn("FirstName", typeof(string)) { AllowDBNull = true },
                    new DataColumn("LastName", typeof(string)) { AllowDBNull = true },
                }
        };

        var row = dt.NewRow();

        row.ItemArray = "1,,Jones".Split(',').Select(s => string.IsNullOrEmpty(s) ? (object)DBNull.Value : (object)s).ToArray();

        dt.Rows.Add(row);
于 2012-09-18T18:50:14.370 回答
0

为什么在将其转换为 int 之前不检查列值是否为空?这种方式似乎更简单。

于 2012-09-18T18:50:33.233 回答