【问题标题】:LINQ Substring CRM 2011LINQ 子字符串 CRM 2011
【发布时间】:2012-01-04 08:26:46
【问题描述】:

我有一个 LINQ 查询,它根据 CRM 2011 的 Where 子句中的某些条件提取一些信息。但我想添加它,以便它只查看 Zip 的前 5 个字符而不是整个 Zip。我尝试添加子字符串。但是如果该值为 null 它将失败。您将如何匹配 Where 子句中 Zip 的前 5 个字符。这是我的查询。

var lQuery = (from a in gServiceContext.CreateQuery("account")
    where (a["name"].Equals(lLead.AccountName) &&
        a["address1_postalcode"].Equals(lLead.ZipCode) &&
        a["address1_stateorprovince"].Equals(lLead.State)) ||
        (a["address1_line1"].Equals(lLead.Address1) &&
        a["address1_postalcode"].Equals(lLead.ZipCode) &&
        a["address1_city"].Equals(lLead.City))
    select new
    {
        Name = !a.Contains("name") ? string.Empty : a["name"],
        City = !a.Contains("address1_city") ? string.Empty : a["address1_city"],
        State = !a.Contains("address1_stateorprovince") ? string.Empty : a["address1_stateorprovince"],
        Zip = !a.Contains("address1_postalcode") ? string.Empty : a["address1_postalcode"],
        AccountId = !a.Contains("accountid") ? string.Empty : a["accountid"]
    })

谢谢!

【问题讨论】:

    标签: linq dynamics-crm-2011 dynamics-crm dynamics-crm-4


    【解决方案1】:

    String.Substring 的另一个问题是,如果字符串不够长,即您尝试获取 4 个字符的字符串的前 5 个字符,它会抛出异常。您可以像这样使用简单的辅助方法:

    where First(a["address1_postalcode"], 5) == lLead.ZipCode
    

    (您可能需要将 a["address1_postalcode"] 转换或强制转换为字符串,具体取决于它返回的类型。)

    public static string First(string s, int charcount)
    {
        if (s == null) return String.Empty;
        return s.Substring(0, Math.Min(s.Length, charcount));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多