C# 显示不正确的成本

C# 显示不正确的成本,c#,asp.net,if-statement,C#,Asp.net,If Statement,我的目标是在网页上显示一天会议的成本,即50美元。然而,我一直得到0.00美元作为回报。我在SQL中测试了SELECT语句,它正在检索正确的数据。现在,我已经将问题缩小到了if…else if方法中的PayBackCC语句中,但我不确定。它应该从变量cOneDCost中获取成本。感谢您的帮助 代码隐藏 protected void PayBackInfo() { try { con.Open(); SqlCommand PBCredit = new

我的目标是在网页上显示一天会议的成本,即50美元。然而,我一直得到0.00美元作为回报。我在SQL中测试了SELECT语句,它正在检索正确的数据。现在,我已经将问题缩小到了
if…else if
方法中的PayBackCC语句中,但我不确定。它应该从变量
cOneDCost
中获取成本。感谢您的帮助

代码隐藏

protected void PayBackInfo()
{
    try
    {
        con.Open();
        SqlCommand PBCredit = new SqlCommand("SELECT * FROM PaymentInfo, ConferenceReg WHERE PaymentInfoID=PaymentInfoIDNum AND PaymentInfoID=@payID AND ConferenceReg.Deleted='N' AND ConferenceIDNum=@confID", con);
        PBCredit.Parameters.AddWithValue("@confID", confID);
        PBCredit.Parameters.AddWithValue("@payID", Request.QueryString["payID"]);

        SqlDataReader readerPB = PBCredit.ExecuteReader();
        while (readerPB.Read())
        {
            piID = readerPB["PaymentInfoID"].ToString();
            cID = readerPB["ConferenceIDNum"].ToString();
            poID = readerPB["PurchaseOrder"].ToString();
            partnersNum = readerPB["PartnersIDNum"].ToString();
            cFullCost = Convert.ToDecimal(readerPB["ConferenceFullFee"]).ToString("#,##0.00");
            cOneDCost = Convert.ToDecimal(readerPB["ConferenceOneDayFee"]).ToString("#,##0.00");
            partnersCost = Convert.ToDecimal(readerPB["PartnersFee"]).ToString("#,##0.00");

            PayBackCC();
        }
        readerPB.Close();
    }
    finally
    {
        con.Close();
    }
}


private void PayBackCC()
{
    if (!partnersNum.Equals("null") || !partnersNum.Equals("0"))
    {
        msgLbl.Text = "$" + partnersCost;
    }
    else if (!cFullCost.Equals("0"))
    {
        msgLbl.Text = "$" + cFullCost;
    }
    else if (!cOneDCost.Equals("0"))
    {
        msgLbl.Text = "$" + cOneDCost;
    }
}
请换

 if (!partnersNum.Equals("null") || !partnersNum.Equals("0"))


除非您希望查询中出现“null”字符串

如果您花时间启动调试器并遵循代码路径,我想您会很快发现问题出在哪里:关于这条语句:
!X | |!Y
。这什么时候是真的,什么时候是假的?答案应该会提示您出了什么问题。您的查询返回了多少条记录?如果只返回一行,则不要使用while,只需调用Read()method@Steve:谢谢。我将尝试调试器。@Yuri:只返回了一行。出于某种原因,我的数据库管理器已将PartnersIDNum的列设置为null,除非另有指定。是的,但作为您正在测试的字符串的“null”和DBNull(null)不一样。@EstherB假设您的
partnersum
为null,您的if将被接受,因为
partnersum
不是0。现在,如果您的
partnersum
为“0”,则将采用相同的if,因为
partnersum
不为空。有了这段代码,你就不可能执行else if块了,@Steve,谢谢你的解释。我现在明白我的问题了。
 if (!String.IsNullOrEmpty(partnersNum) || !partnersNum.Equals("0"))