使用 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

后工作