我有一个LINQ语句来检查,如果有人输入URL的凭单赎回。我得到这张优惠券的方式是使用一个普通的URL,带有一个额外的散列CampaignID,它被称为我的VoucherRedemption,如下所示。如何做一个内部连接使用LINQ
if (Request.QueryString["voucherRedemption"] != null)
{
String VoucherRemption = Request.QueryString["voucherRedemption"];
MSCDatabaseDataContext MSCDB2 = new MSCDatabaseDataContext();
var getCampaign = from campaign in MSCDB2.Tbl_Campaigns
where campaign.Link.Contains(VoucherRemption)
select campaign;
var VoucherCampaign = getCampaign.FirstOrDefault();
campaignName.Value = VoucherCampaign.CampaignName;
campaignDescription.Value = VoucherCampaign.CampaignDescription;
txtStartDate.Text = VoucherCampaign.StartDate.ToString();
txtDateEnd.Text = VoucherCampaign.EndDate.ToString();
campaignAudience.Value = VoucherCampaign.Target.ToString();
txtDiscount.Text = VoucherCampaign.Discount.ToString();
txtTsCs.Text = VoucherCampaign.TermsConditions;
txtTsCs.ReadOnly = true;
CalendarExtender1.Enabled = false;
CalendarExtender2.Enabled = false;
txtStartDate.ReadOnly = true;
txtDateEnd.ReadOnly = true;
txtDiscount.ReadOnly = true;
txtEmail.Visible = true;
}
现在,我不断收到一个:
System.NullReferenceException:对象不设置到对象的实例。
但奇怪的是,是昨天它工作。但只有昨天。其他日子不是。不是它回到了被打破。有没有办法解决这个问题?
编辑:我检查了文章,仍然不能似乎发现问题。它是后
var VoucherCampaign = getCampaign.FirstOrDefault();
这是非常危险的,因为它可以随时返回默认(又名空)昨天工作
'getCampaign.FirstOrDefault()'可能返回null。然后'VoucherCampaign.StartDate.ToString()'应该抛出这个空引用异常。 –
@AmitKumarGhosh但昨天工作正常。现在我在“campaignName.Value = VoucherCampaign.CampaignName;”处得到异常并且这里没有DB中的任何空值。 –
'VoucherCampaign.CampaignName'不应该抛出。 –