LINQ Substring CRM 2011 - PullRequest
       19

LINQ Substring CRM 2011

1 голос
/ 23 ноября 2011

У меня есть запрос LINQ, который запрашивает некоторую информацию на основе определенных критериев в предложении Where из CRM 2011. Но я хочу добавить его, чтобы он смотрел только на первые 5 символов Zip вместо всего Zip.Я попытался добавить SubString.Но если значение равно нулю, оно потерпит неудачу.Как бы вы подошли к сопоставлению первых 5 символов Zip в предложении Where.Это мой запрос.

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"]
    })

Спасибо!

1 Ответ

3 голосов
/ 23 ноября 2011

Еще одна проблема, связанная с String.Substring , заключается в том, что он выбрасывает, если строка недостаточно длинная, т.е. вы пытаетесь получить первые 5 символов строки из 4 символов.Вы можете использовать простой вспомогательный метод, подобный следующему:

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));
}
...