我的数据库中有一个联系人表,其中的电话号码不遵循任何特定格式。例如,它们的格式可以为+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, "");
}
我可以在lambda表达式中使用此自定义方法吗?
答案 0 :(得分:0)
最好的办法是从用户输入中剥离所有不是数字的输入,并对要搜索的值进行相同操作,然后进行比较。
答案 1 :(得分:0)
您可以将其重写为:
MyContact existing = context.MyContacts
.FirstOrDefault(u => stripChars(u.Phone) == stripChars(inputPhoneNumber));
of,如果您只是想知道它是否存在:
if (context.MyContacts
.Any(u => stripChars(u.Phone) == stripChars(inputPhoneNumber))
还是您在寻求有关stripChars()
函数的建议?