C# LINQ存储表达式中不支持方法
我使用LINQtoEntities从SQL中选择数据 这是我的声明C# LINQ存储表达式中不支持方法,c#,sql,linq,C#,Sql,Linq,我使用LINQtoEntities从SQL中选择数据 这是我的声明 var employee = from p in _context.employee select p; employee = employee.Where(p => Helper.RemoveSpecialCharacters(p.IdentificationNumber). Equals(Helper.RemoveSpecialCharacters(searc
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方法来比较没有特殊字符的比较的两面
这里我得到一个错误,“RemoveSpecialCharacters”方法不受Linq->Entity支持,并且不是有效的存储表达式
我知道它不能翻译成SQL。但是如何使用LINQ进行这种比较呢
删除特殊字符方法
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能够理解它
.ToList()
完成初始数据库查询,并为您提供
要使用和修改对象的内存中表示
.ToList()
完成初始数据库查询,并为您提供
要使用和修改对象的内存中表示
如果您可以在SQL中表达您的
删除特殊字符
,那么您可以在SQL视图中为您的员工提供一个计算的标识号(不包含特殊字符
列),然后对其进行筛选
您还可以通过为SQL Server创建.NET程序集来重用该方法的C#实现。如果您可以在SQL中表达您的
删除特殊字符
,则您可以使用SQL视图为员工提供一个计算的标识号(不带特殊字符
列),然后对其进行筛选
您还可以通过为SQL Server创建.NET程序集来重用该方法的C#实现。这将在筛选之前在内存中提取整个employee表。是的,这不是我想做的事情。即使提取整个表是唯一的解决方案,我也会将
.ToList()
替换为.AsEnumerable()
以避免创建列表并将丢弃的对象保留在内存中。这将在筛选之前在内存中提取整个employee表。是的,这不是我想做的事情。即使提取整个表是唯一的解决方案,我也会将.ToList()
替换为.AsEnumerable()
避免创建列表并将丢弃的对象保存在内存中。顺便说一下,var employee=from p in _context.employee选择p代码>被翻译成var employee=(_context.employee)
(C#语言规范版本5.0,7.16.2.5 Select子句)。理想情况下,您应该能够创建一个MethodCall表达式,为了使IQueryable查询能够工作,它只是无法翻译方法,当从表达式树
编译Func
时,请使用正则表达式检查代码,var employee=from p在_上下文中。employee选择p代码>被翻译成var employee=(_context.employee)代码>(C#语言规范版本5.0,7.16.2.5 Select子句)。理想情况下,您应该能够创建一个MethodCall表达式,为使IQueryable查询正常工作,它只是无法转换方法,当从表达式树编译Func
时,请使用Regex检查代码。替换如何在Sql中表示RemoveSpecialCharacters
,您应该已经回答了这一部分,随着数据大小的增加,Sql CLR或动态Sql对于性能不是很好的选择。如果没有代码,这应该更多的是注释而不是回答如何在Sql中表示删除特殊字符
,您应该已经回答了这一部分,随着数据大小的增加,Sql CLR或动态Sql对于性能不是很好的选择。如果没有代码,这应该更多的是评论而不是回答
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;