gpt4 book ai didi

c# - 获取类型的默认值

转载 作者:行者123 更新时间:2023-12-02 16:17:22 25 4
gpt4 key购买 nike

我正在使用我在此网站上找到的通用数据表到列表转换方法:

private List<T> ConvertToList<T>(DataTable dt)
{
var columnNames = dt.Columns.Cast<DataColumn>()
.Select(c => c.ColumnName)
.ToList();

var properties = typeof(T).GetProperties();

return dt.AsEnumerable().Select(row =>
{
var objT = Activator.CreateInstance<T>();

foreach (var pro in properties)
{
if (columnNames.Contains(pro.Name))
{
pro.SetValue(objT, row[pro.Name], null);
}
}

return objT;
}).ToList();

}

它工作得很好,除了当我在 pro.SetValue 中为整数字段命中空值时。失败的原因是,如果第二个参数为 null,pro.SetValue 将为类型设置默认值,如下所示:pro.SetValue(objT, null,null)。但我的 row[IdColumn] 返回空对象 {} 而不是 null。我收到的错误是:

Object of type 'System.DBNull' cannot be converted to type 'System.Nullable`1[System.Int32]'.

何时使用int?

Object of type 'System.DBNull' cannot be converted to type [System.Int32]'.

当使用int时我该如何处理这种情况?

最佳答案

首先检查是否为空:

pro.SetValue(objT, row.IsNull(pro.Name) ? null : row[pro.Name], null);

关于c# - 获取类型的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com