当前上下文中不存在类属性赋值?

时间:2012-04-20 22:02:24

标签: c# asp.net

这是我的代码:

DistInfo distInfo = new DistInfo
{
    if (reader.GetString( reader.GetOrdinal( "GoLiveDate" ) ) == null ) {
        AnticipatedLaunchDate = "";
    }
    else
    {
        AnticipatedLaunchDate =  reader.GetString( reader.GetOrdinal( "GoLiveDate" ) );
    }
};

这是我的班级:

public class DistInfo
{
    public string AnticipatedLaunchDate { get; set; }
}

据说AnticipatedLaunchDate在当前上下文中不存在。如果它为空,是否有不同的方法为其分配空字符串?

我构建并运行了代码,它在第254行出错了,这就是这一行:

DistInfo distInfo = new DistInfo
{
    AnticipatedLaunchDate = reader.GetString( reader.GetOrdinal( "GoLiveDate" ) ) ?? ""
};

出现以下错误:

没有数据时无效尝试读取。

以下是SQL查询返回的数据:

DistID  password    GoLiveDate  FirstBonusRun   TechFName   TechLName   TechEmail   TechPhone   WebISPFName WebISPLName WebISPEmail WebISPPhone FullFillFName   FullFillLName   FullFillEmail   FullFillPhone   FName   LName   HomePhone   Email
113 !12341  NULL    NULL    John    Doe 1234@1234.com   8015555555                                          NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    Jane    Doe 8015555555  1234@1234.com

1 个答案:

答案 0 :(得分:1)

您的字段GoLiveDate包含空值,而null不是GetString返回的DBNull.Value,
你不能用??在这种情况下运算符。 (See this question here) 尝试使用此代码。

编辑:

DistInfo distInfo = new DistInfo() {AnticipatedLaunchDate = "Some default value instead of null"}; 
int colOrdinal = reader.GetOrdinal( "GoLiveDate" ); 
if(!reader.IsDBNull(colOrdinal ) ) 
{ 
    distInfo.AnticipatedLaunchDate = reader.GetString(colOrdinal);
} 
return distInfo;