如何使用具有字母数字比较的实体框架进行查询
本文关键字:实体 框架 查询 比较 数字 何使用 | 更新日期: 2023-09-27 17:58:56
如何仅在字母数字比较中使用实体框架和LINQ进行查询?我有一个数据库表,它有一个包含特殊字符的AccountNumber字段,所以一个示例帐号可能看起来像这样:803-2234502-345
。但我要搜索的账号不会有特殊字符:8032234502345
string accountNumber = "8032234502345";
Provider provider = dbContext.Providers.Where(p => p.AccountNumber == accountNumber).FirstOrDefault();
我试着在比较的两边添加一个Regex.Replace
,但我得到了一个例外:
LINQ to Entities不识别方法"System.String Replace(System.String,System.String)"方法,并且此方法无法转换为存储表达式
如有任何帮助或建议,我们将不胜感激。
您使用的是Linq to Entities,因此只能在enities映射器中使用映射到SQL的函数。您可以更改正在使用的函数以正确映射到SQL(尽管我怀疑使用Regex,您将无法做到这一点-必须进行更手动的比较),或者(正如@Dabblernl在评论中提到的那样)将您的提供者(或提供者的子集)加载到列表/或枚举中,然后在此基础上运行Regex。
所以类似于:
Provider provider = dbContext.Providers.Where(p => p != null && p != "").ToList()
.Where(p => *Do regex comparison here*).FirstOrDefault();
到SQL的可能映射如下:http://msdn.microsoft.com/en-us/library/bb738681.aspx