gpt4 book ai didi

c# - LINQ 到实体 : Removing special characters inside the "where" expression

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:25 30 4
gpt4 key购买 nike

我使用 LINQ TO ENTITY 来根据电话号码过滤人员列表。

IEnumerable<Person> personsList = (from person in repoPersons.All()
where person.PhoneNumber.Contains(PhoneSearch)
select person).ToList();

repoPersons.All() 包含从数据库中读取的所有人员。PhoneSearch 是用户输入的搜索词。

电话号码以特殊格式的字符串保存在数据库中:+1 (555) 555-6608(作为示例。

但我想允许用户搜索 5555556608 而无需正确格式化。 (我希望他也能够搜索部分电话号码,如 556608 并且仍能得到结果。

我试图创建一个名为 RemoveSpecialCharactersInPhoneNumber 的方法,它将删除特殊字符并返回它并像这样使用它:

IEnumerable<Person> personsList = (from person in repoPersons.All()
where RemoveSpecialCharactersInPhoneNumber(person.PhoneNumber).Contains(PhoneSearch)
select person).ToList();

但是我得到这个错误:

LINQ to Entities does not recognize the method 'System.String RemoveSpecialCharactersInPhoneNumber(System.String)' method, and this method cannot be translated into a person expression.

那么有没有一种方法可以使用 LINQ TO ENTITY 检查 PhoneNumber 是否包含没有特殊字符的 PhoneSearch?

我知道我可以使用 LINQ TO ENTITY 获取所有列表,然后使用 LINQ TO OBJECT 对其进行过滤,但我试图避免这种方法。

非常感谢任何解决方案或提示

最佳答案

以下内容并不十分整洁,但它会解决您的问题(因为没有方法试图在 SQL 端被错误地解决)

IEnumerable<Person> personsList = (from person in repoPersons.All()
where person.Phone.Replace("+", "").Replace("(", "").Replace(")", "").Replace("-", "").Replace(" ", "").Contains(PhoneNumber)
select person).ToList()

关于c# - LINQ 到实体 : Removing special characters inside the "where" expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10635147/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com