3

如何仅对字母数字比较使用 Entity Framework 和 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)' 方法,并且此方法无法转换为存储表达式。

任何帮助或建议表示赞赏。

4

1 回答 1

1

您正在使用 Linq to Entities,因此只能使用实体映射器中映射到 SQL 的函数。您可以更改用于正确映射到 SQL 的函数(尽管我怀疑使用 Regex 您将无法做到这一点 - 必须进行更手动的比较),或者(正如评论中提到的@Dabblernl )将您的提供者(或提供者的子集)加载到列表/或可枚举中,然后在其上运行正则表达式。

所以像:

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

于 2013-02-13T22:20:12.027 回答