我正在使用LINQ to Entities从SQL中选择数据。
这是我的陈述
var employee = from p in _context.employee
select p;
employee = employee.Where(p =>
Helper.RemoveSpecialCharacters(p.IdentificationNumber).
Equals(Helper.RemoveSpecialCharacters(search.IdentificationNumber)));
var Results = employee.ToList();
我正在使用我编写的RemoveSpecialCharacters方法来比较没有特殊字符的比较的两面。
这里我收到错误,Linq-> Entity不支持“RemoveSpecialCharacters”方法,并且它不是有效的商店表达式。
据我所知,它无法翻译为SQL。但是如何使用LINQ进行这样的比较?
RemoveSpecialCharacters方法
public static string RemoveSpecialCharacters(string str)
{
char[] arr = str.Where(c => (char.IsLetterOrDigit(c))).ToArray();
str = new string(arr);
return str;
}
如果将methodname翻译成LINQ存储,那么我怎么能把它放在linq中以便sql理解它。
答案 0 :(得分:2)
如果您可以在SQL中表达RemoveSpecialCharacters
,那么您可以使用SQL视图向您的员工显示计算的IdentificationNumberWithoutSpecialCharacters
列,然后对其进行过滤。
您还可以通过为SQL Server创建.NET程序集来重用该方法的C#实现。
答案 1 :(得分:0)
.ToList()
完成初始数据库查询,并为您提供 内存表示,用于处理和修改对象。
var employee = from p in _context.employee
select p.ToList();
string searchIdent = Helper.RemoveSpecialCharacters(search.IdentificationNumber);
employee = employee.Where(p =>
Helper.RemoveSpecialCharacters(p.IdentificationNumber).
Equals(searchIdent));
var Results = employee;