C# 当前上下文中不存在类属性分配?

C# 当前上下文中不存在类属性分配?,c#,asp.net,C#,Asp.net,这是我的密码: DistInfo distInfo = new DistInfo { if (reader.GetString( reader.GetOrdinal( "GoLiveDate" ) ) == null ) { AnticipatedLaunchDate = ""; } else { AnticipatedLaunchDate = reader.GetString( reader.GetOrdinal( "GoLiv

这是我的密码:

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; }
}
这意味着在当前上下文中不存在ExpectedLaunchDate。如果为空,是否有其他方法为其分配空字符串

我构建并运行了代码,代码在第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

您的字段GoLiveDate包含null值,null不是DBNull。GetString返回的值,
你不能用这个??本例中的操作员。 请尝试使用此代码

编辑:


我看到你已经添加了记录的内容。如前所述,GoLiveDate为null,GetString()返回DBNull.Value非null。即使这样也不起作用。虽然我能走得更远。当跨过它时,它会到达终点!reader.IsDBNull行,但完全跳过该块。他们将该列设置为VarChar(50),但不确定这是否有区别。它似乎不想将NULL识别为DbNULL。没错。如果数据库中的字段包含NULL,则IsDBNull返回true,并且不应在使用GetString的块中输入。不能使用GetString()。您应该为ExpectedLaunchDate设置默认值。我会尝试更新我的答案我明白了!只是忘了包括一个其他的。现在它似乎起作用了,现在再重复11次。这将是一个大方法。
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;