如何使用ItemArray将Null值插入DataTable

时间:2012-09-18 18:38:52

标签: c# ado.net

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

在代码中,我将分割逗号分隔的字符串并将其分配给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,但也没有用。

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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