我编写了经过良好性能测试的代码。
在代码中,我将分割逗号分隔的字符串并将其分配给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?
答案 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之前检查列值是否为空?这种方式似乎更简单。