Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查表中的DB Null_C#_Sql_Asp.net Mvc - Fatal编程技术网

C# 检查表中的DB Null

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

我从表中获取数据,但“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。
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
}