.net - 如何将可空类型转换为其基础类型?

标签 .net type-conversion nullable

出于某种特殊原因,我必须将数据存储到 DataTable 中,并意识到它不支持可为 null 的类型:抛出 System.NotSupportedException:DataSet 不支持 System.Nullable<>。有没有比枚举类型和为每个可空类型编写自定义代码更有效的转换方法?

最佳答案

但它支持可空类型, AllowDbNull默认情况下为 true:

var table = new DataTable();
table.Columns.Add("NullableInt", typeof(int));
table.Rows.Add(1);
table.Rows.Add(2);
table.Rows.Add(3);
table.Rows.Add((int?)null);

使用DataRow extension methods支持可为 null 的类型,例如:

foreach(DataRow row in table.Rows)
{
    int? value = row.Field<Int32?>("NullableInt");
    // modify the value with SetField:
    row.SetField<Int32?>("NullableInt", null); 
    // or: 
    row.SetField("NullableInt", (int?)null);
}

关于.net - 如何将可空类型转换为其基础类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18720426/

相关文章:

c++ - 将 char[] 转换为 off_t

c# - 通过使用 LINQ 跳过空值将 Dictionary<int, int?> 转换为 Dictionary<int, int>

c# - 我怎么可能在空对象上调用 HasValue?

.net - 实现自定义LINQ to X提供程序

c# - 从 int 到短字符串的 2 路加密

.net - Array.Reverse() 与 Enumerable.Reverse<TSource>()

qt - QByteArray到/从无符号字符转换*

.net - 使用 LINQ 选择和组合对象的正确方法是什么?

c++ - 如何将格式长值 20010203 转换为字符串 2001-02-03?

C# SQL null convert to-from,这有什么问题吗?