Как я могу просто и оптимизировать это лямбда-выражение? - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь упростить и оптимизировать следующее лямбда-выражение. Мое требование состоит в том, чтобы получить первое лидерство, чей мобильный телефон или телефон1 совпадает с потребление PhoneNum. Я хочу сопоставить только первые 10 цифр.

 Entity matchingLead = 
     allLeads.Where(l => 
         (l.Attributes.Contains("mobilephone") && 
         (Regex.Replace(l.Attributes["mobilephone"].ToString(), "[^0-9]", "").Length >=10 
             ? Regex.Replace(l.Attributes["mobilephone"].ToString(), "[^0-9]", "").Substring(0,9) 
             : Regex.Replace(l.Attributes["mobilephone"].ToString(), "[^0-9]", "").Substring(0)).Equals(intakePhoneNum))||
         (l.Attributes.Contains("address1_telephone1") && 
         (Regex.Replace(l.Attributes["address1_telephone1"].ToString(), "[^0-9]", "").Length >= 10 
             ? Regex.Replace(l.Attributes["address1_telephone1"].ToString(), "[^0-9]", "").Substring(0, 9) 
             : Regex.Replace(l.Attributes["address1_telephone1"].ToString(), "[^0-9]", "").Substring(0)).Equals(intakePhoneNum))).FirstOrDefault();

1 Ответ

0 голосов
/ 17 ноября 2018

Сначала я бы предложил ввести переменные для атрибутов.Тогда вместо различия между Длина> = 10 и Длина <10 просто используйте StartsWith.И последнее, вместо Where (...). FirstOrDefault, просто используйте FirstOrDefault (...) </p>

Entity matchingLead = 
 allLeads.FirstOrDefault(l => 
 {
    if (l.Attributes.Contains("mobilephone"))
    {
        var phone = Regex.Replace(l.Attributes["mobilephone"].ToString(), "[^0-9]", "");
        if (phone.StartsWith(intakePhoneNum))
            return true;
    }
    if (l.Attributes.Contains("address1_telephone1"))
    {
        var phone = Regex.Replace(l.Attributes["address1_telephone1"].ToString(), "[^0-9]", "");
        if (phone.StartsWith(intakePhoneNum))
            return true;
    }
    return false;
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...