Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 如何使用LINQ进行内部联接_C#_Entity Framework_Linq - Fatal编程技术网

C# 如何使用LINQ进行内部联接

C# 如何使用LINQ进行内部联接,c#,entity-framework,linq,C#,Entity Framework,Linq,我有一个LINQ声明来检查是否有人正在输入凭证兑换的URL。我获得这张优惠券的方式是使用一个常规url,再加上一个散列的活动ID,称为my VoucherRedemption,如下所示 if (Request.QueryString["voucherRedemption"] != null) { String VoucherRemption = Request.QueryString["voucherRedemption"]; MSCDatabaseDataContext MS

我有一个LINQ声明来检查是否有人正在输入凭证兑换的URL。我获得这张优惠券的方式是使用一个常规url,再加上一个散列的活动ID,称为my VoucherRedemption,如下所示

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();
这是非常危险的,因为它可以在任何时候返回默认值(也称为null)。数据库连接可能已失败,您超时,查询没有结果,或者根本不允许您访问数据库。当您尝试使用voucherCampaign时,All将导致空指针。尝试将其更改为以下内容:


它无法解决获得空值的原因。但至少您的应用程序不会在该函数中的空指针上崩溃。如果你想知道为什么你得不到回报,把firstrodefault改成firstrodefault,然后试着抓住它。catch块中的异常将包含有关查询为何不起作用的详细信息。

getCampaign.FirstOrDefault()
可能返回null。然后,
VoucherCampaign.StartDate.ToString()
应该抛出空引用异常。@AmitKumarGhosh,但它昨天工作正常。现在我在“campaigname.Value=VoucherCampaign.campaigname;”处得到了异常,并且数据库中没有任何空值用于此操作。
VoucherCampaign.campaigname
不应抛出。您在数据库中有与昨天相同的数据吗?@Alexander YES。这就是为什么它是投掷。但是,如果VocherCampaign在昨天起作用,它怎么可能是空的呢?只是没有意义。嘿@NickOtten,谢谢你的帮助和回复。但我发现了问题所在。当URL读取某些字符(如+和/)时,它会用它们的实际值替换它们。所以我只需要简单地替换一下我的担保。但是谢谢你的空检查,它也阻止了我的应用程序崩溃。你帮我解决了这个问题,谢谢。
var VoucherCampaign = getCampaign.FirstOrDefault();
if (VoucherCampaign == null) {
//print a error message here so you know soemthing is wrong
return;
}
//rest of your code