我正在使用LINQ to Entities从SQL中选择数据。LINQ Store表达式中不支持的方法
这里是我的发言
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;
}
我怎样才能把这个LINQ让SQL理解,如果方法名被转换为LINQ店那么也许。
顺便说一句,var employee = from _context.employee select p;'被翻译成var employee =(_context.employee);'(C#语言规范版本5.0,7.16.2.5选择子句) 。 – Philippe
理想情况下,您应该能够创建一个MethodCall表达式,为您的IQueryable查询工作,它只是无法翻译方法,从'Expression Tree'编译'Func'时 –
使用'Regex.Replace'检出代码 –