C# 检查表中的DB Null
我从表中获取数据,但“DateOfBirth”字段显示为C# 检查表中的DB Null,c#,sql,asp.net-mvc,C#,Sql,Asp.net Mvc,我从表中获取数据,但“DateOfBirth”字段显示为null。 所以,如果“DateOfBirth”是null我怎么能跳过它呢 异常:无法将DBNull.Value强制转换为类型“System.DateTime”。请使用可为空的类型 var dd=dx.Tables[0].AsEnumerable().Select(x=>newstaffmodel { userno=x.Field(“userno”), dateofbirth=x.Field(“dateofbirth”),//这是一个DB
null
。
所以,如果“DateOfBirth”是null
我怎么能跳过它呢
异常:无法将DBNull.Value强制转换为类型“System.DateTime”。请使用可为空的类型
var dd=dx.Tables[0].AsEnumerable().Select(x=>newstaffmodel
{
userno=x.Field(“userno”),
dateofbirth=x.Field(“dateofbirth”),//这是一个DB NULL。
passportno=x.字段(“passportno”),
passportexp=x.Field(“EXPDATE”)
});
使用可为空的日期时间
<代码>日期时间?。在您的员工模型中
:
public class StaffModel
{
public string userno { get; set; }
public DateTime? dateofbirth { get; set; }
public string passportno { get; set; }
public DateTime passportexp { get; set; }
}
然后在填充该模型时:
var dd = dx.Tables[0].AsEnumerable().Select(x => new StaffModel
{
userno = x.Field<string>("USERNO"),
dateofbirth = x.Field<DateTime?>("DATEOFBIRTH"), // note the ?
passportno = x.Field<String>("PASSPORTNO"),
passportexp = x.Field<DateTime>("EXPDATE")
});
var dd=dx.Tables[0].AsEnumerable().Select(x=>newstaffmodel
{
userno=x.Field(“userno”),
dateofbirth=x.Field(“dateofbirth”),//注意?
passportno=x.字段(“passportno”),
passportexp=x.Field(“EXPDATE”)
});
如果变量不是空类型,则需要分配DateTime.MinDate
var dd = dx.Tables[0].AsEnumerable().Select(x => new StaffModel
{
userno = x.Field<string>("USERNO"),
dateofbirth = x.Field<DateTime>("DATEOFBIRTH") ?? DateTime.MinDate,
passportno = x.Field<String>("PASSPORTNO"),
passportexp = x.Field<DateTime>("EXPDATE")
});
var dd=dx.Tables[0].AsEnumerable().Select(x=>newstaffmodel
{
userno=x.Field(“userno”),
dateofbirth=x.Field(“dateofbirth”)??DateTime.MinDate,
passportno=x.字段(“passportno”),
passportexp=x.Field(“EXPDATE”)
});
尝试通过以下方式检查DBNull值:
var dd = dx.Tables[0].AsEnumerable().Select(x => new StaffModel
{
userno = x.Field<string>("USERNO"),
dateofbirth = x["DATEOFBIRTH"] != DBNull.Value ? x.Field<DateTime>("DATEOFBIRTH") : DateTime.MinValue,
passportno = x.Field<String>("PASSPORTNO"),
passportexp = x.Field<DateTime>("EXPDATE")
});
var dd=dx.Tables[0].AsEnumerable().Select(x=>newstaffmodel
{
userno=x.Field(“userno”),
dateofbirth=x[“dateofbirth”]!=DBNull.Value?x.Field(“dateofbirth”):DateTime.MinValue,
passportno=x.字段(“passportno”),
passportexp=x.Field(“EXPDATE”)
});
如果value等于
DBNull.value
,则设置MinValue
或任何您想要的值。您可以检查DBNull.value
object value = x.Field("DATEOFBIRTH");
if (value == DBNull.Value)
{
// do something
}
else
{
// do something else
}
出生日期不是可为空的类型。在我的数据库中有一个问题,目前我需要跳过它。
出生日期不是可为空的类型。
您的异常情况可能会显示为不可为空。实际上,DB来自外部,这是DB问题。。。目前我需要跳过这一步。不管怎样,解决办法都是一样的。您不能向DateTime
提供null
——仅DateTime?
。如果要跳过使用该值的操作,则需要向代码中添加一些逻辑,以处理生成的IEnumerable
DateTime.MinValue;纠正我的错误。谢谢:-)
object value = x.Field("DATEOFBIRTH");
if (value == DBNull.Value)
{
// do something
}
else
{
// do something else
}