使用 Entity Framework 如何在忽略空格的情况下搜索 phone 数字?
Using Entity Framework how can I do a search on phone number ignoring spaces?
var Data = (from Client in _context.Client.Include(c => c.ClientType)
select Client);
Data = Data.Where(m => ... || (m.MobilePhone != null && String.Concat(m.MobilePhone.Where(c => !Char.IsWhiteSpace(c))) == search)).ToList();
如果 mobilephone
不为空,则此方法有效,但如果 phonenumber
为空,则会出现空引用异常错误。
我已经添加了 m.MobilePhone != null
条件,但这里似乎没有应用正常的 AND
顺序,所以它不会停止错误。
我知道我可以转换为列表然后对其进行过滤,但是结果的数量太大了。
关于如何修复错误或其他方法的任何建议?
使用 !string.IsNullOrEmpty 过滤掉 null 和空 space
var Data = (from Client in _context.Client.Include(c => c.ClientType)
select Client);
Data = Data.Where(m => !string.IsNullOrEmpty(m.MobilePhone) && m.MobilePhone == search).ToList();
是这样去掉字符串中的所有空格吗?
您还可以使用正则表达式删除字符串中的所有空格。
string str = "123 456 789";
str = Regex.Replace(str, @"\s", "");
我上面的代码是正确的。它在从 EntityFrameworkCore.Sqlserver 2.1.3 升级到 2.1.14
后工作
var Data = (from Client in _context.Client.Include(c => c.ClientType)
select Client);
Data = Data.Where(m => ... || (m.MobilePhone != null && String.Concat(m.MobilePhone.Where(c => !Char.IsWhiteSpace(c))) == search)).ToList();
如果 mobilephone
不为空,则此方法有效,但如果 phonenumber
为空,则会出现空引用异常错误。
我已经添加了 m.MobilePhone != null
条件,但这里似乎没有应用正常的 AND
顺序,所以它不会停止错误。
我知道我可以转换为列表然后对其进行过滤,但是结果的数量太大了。
关于如何修复错误或其他方法的任何建议?
使用 !string.IsNullOrEmpty 过滤掉 null 和空 space
var Data = (from Client in _context.Client.Include(c => c.ClientType)
select Client);
Data = Data.Where(m => !string.IsNullOrEmpty(m.MobilePhone) && m.MobilePhone == search).ToList();
是这样去掉字符串中的所有空格吗?
您还可以使用正则表达式删除字符串中的所有空格。
string str = "123 456 789";
str = Regex.Replace(str, @"\s", "");
我上面的代码是正确的。它在从 EntityFrameworkCore.Sqlserver 2.1.3 升级到 2.1.14
后工作