Поиск телефонных номеров с использованием лямбда-выражений - PullRequest
0 голосов
/ 11 апреля 2019

В моей базе данных есть таблица контактов с номерами телефонов, которые не соответствуют ни одному конкретному формату. Например, они могут быть в формате +1 (800) 111-2222 или просто 8001112222.

Мне нужно взять номер телефона (например, из регистрационной формы) и выполнить поиск в таблице контактов, чтобы узнать, существует ли этот номер телефона уже. Конечно, номер телефона для ввода также может быть в любом формате, со специальными символами или без них. Поэтому мне нужно убрать все нечисловые символы как из табличного значения, так и из входного значения, чтобы я мог сделать сравнение. Как мне это сделать?

Я ищу что-то вроде этого:

string inputPhoneNumber = "+1 (800) 111-2222";
MyContact existing = context.MyContacts
    .Where(u => stripChars(u.Phone) == stripChars(inputPhoneNumber))
    .FirstOrDefault();

Где stripChars() - это просто имя метода, которое я придумал, которое удаляет все нечисловые символы из данной строки.

Обновление : мой метод stripChars() реализован следующим образом:

public static string StripNonNumerical(string input)
{
    Regex numbers = new Regex(@"[^\d]");
    return numbers.Replace(input, "");
}

Можно ли использовать этот пользовательский метод внутри лямбда-выражения?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Вы можете переписать это как:

MyContact existing = context.MyContacts
    .FirstOrDefault(u => stripChars(u.Phone) == stripChars(inputPhoneNumber));

из, если вы просто хотите узнать, существует ли оно:

if (context.MyContacts
    .Any(u => stripChars(u.Phone) == stripChars(inputPhoneNumber))

Или вы спрашивали предложения по stripChars()функционировать?

0 голосов
/ 11 апреля 2019

Лучшее, что нужно сделать, это убрать все данные, которые не являются числами из пользовательского ввода, и сделать то же самое со значениями, которые вы ищете, и сравнить их таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...