我有一个LINQ查询,在某些情况下,它不返回任何值。因此,我正在使用Any()进行检查,以便可以相应地处理代码。但是当我使用Any()Count()时,出现以下错误:

{"Value cannot be null.\r\nParameter name: g"}


这是我正在使用的代码:

var cQuery = (from a in gServiceContext.CreateQuery("contact")
where ((((EntityReference)a["accountid"]).Id.Equals(new Guid(p.AccountGuid))) &&
((a["firstname"].Equals(p.FirstName) && a["lastname"].Equals(p.LastName) && a["address1_stateorprovince"].Equals(p.State)) || (a["emailaddress1"].Equals(p.Email))))
    select new
        {
            ContactId = !a.Contains("contactid") ? string.Empty : a["contactid"],
        FirstName = !a.Contains("firstname") ? string.Empty : a["firstname"],
        LastName = !a.Contains("lastname") ? string.Empty : a["lastname"],
        State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"],
        Email = !a.Contains("emailaddress1") ? string.Empty : a["emailaddress1"]
    }).DefaultIfEmpty();

if (cQuery.ToList().Any())
    {
        // Do something if I get results
    } else {
      // Something else if no results
    }


有什么想法我做错了吗?似乎它应该为我工作。在错误输出的情况下。它不会返回任何结果,所以我希望它跳过if中的内容。但是在其他情况下,将会有结果。谢谢!

更新:

我知道代码很丑陋。抱歉。

看来问题在于:

where ((((EntityReference)a["accountid"]).Id.Equals(new Guid(p.AccountGuid)))


看起来在哪里获得NULL。我该如何处理,以免错误弹出?

最佳答案

参数名称“ g”是new Guid(string g)构造函数中参数的名称。

因此,我怀疑您的根本原因实际上是在某些情况下P.AccountGuid为空。

关于c# - 如果结果为NULL,LINQ会在Any()上出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9693133/

10-13 07:17