Linq to sql LINQ Dynamic在哪里但首先清洁特殊字符

Linq to sql LINQ Dynamic在哪里但首先清洁特殊字符,linq-to-sql,Linq To Sql,我有下面的代码,但它给了我一个错误 .Where(p => Regex.Replace(p.Phone, rgPattern, "") == Regex.Replace(phone.Trim(), rgPattern, "") string rgPattern = @"[\\\/:\*\?""<>|()-]"; var members = from m in Context.Members select m; if (!String.IsNullOrEmpty(pho

我有下面的代码,但它给了我一个错误

.Where(p => Regex.Replace(p.Phone, rgPattern, "") == Regex.Replace(phone.Trim(), rgPattern, "")

string rgPattern = @"[\\\/:\*\?""<>|()-]";

var members = from m in Context.Members select m;

  if (!String.IsNullOrEmpty(phone))
   members = members.Where(p => Regex.Replace(p.Phone, rgPattern, "") == Regex.Replace(phone.Trim(), rgPattern, ""));

在比较之前,你知道如何清理价值吗

这可能是您的数据体系结构的问题。这就是为什么我们一直保持表中的数据干净——这样你就不必做这样的坏事了

您在这里有几个选项:

  • 清理您的实际数据,并在数据层添加保护,以保持您的电话号码纯净

  • 在数据中创建一个视图或计算列,用于清除数据层上的电话号码,然后映射到该干净的电话号码并查询该列

  • 在运行基于正则表达式的查询之前,对行的子集调用ToList(),然后使用Linq to对象对这些行运行正则表达式。如果在使用Linq to对象之前不能充分缩小行的范围,那么这可能是禁止的

  • members.OrderBy(orderBy).Skip(startRow).Take(maxRows).ToList();