foreach (PropertyInfo PropertyItem in this.GetType().GetProperties())
    {
        PropertyItem.SetValue(this, objDataTable.Rows[0][PropertyItem.Name.ToString()], null);
    }


在一个循环中,我得到这个异常错误:

类型“ System.DBNull”的对象不能转换为类型“ System.String”。

发生错误是因为数据库中的字段之一没有值(空),因此string属性无法处理它。我怎样才能将此空值转换为字符串?

I got this solution

如果您知道更短或更佳的产品,请随时发布。我试图避免在每个循环上检查当前值是否为null。

最佳答案

Ben弄明白了(我实际上认为这只是他旁边的“错别字”,但我不能为他编辑它)。这应该可以解决问题。

foreach (PropertyInfo PropertyItem in this.GetType().GetProperties())
    {
        var value = objDataTable.Rows[0][PropertyItem.Name.ToString()];
        PropertyItem.SetValue(this, value == DBNull.Value ? "" : value.ToString() , null);
    }


而且您需要在每次迭代中进行测试,因为它是给定行中给定单元格中的值,所以实际上没有办法避免在使用这些单元格值之前检查每个值

10-06 12:06