使用我自己的LINQtoEntities方法我有一个LINQ项目,我想在其中使用我自己的方法。NoWhiteSpaces方法应该返回没有空格的上部字符串。publicstaticclassLittleExtensions{publicstaticstringNoWhiteSpaces(thisStrings){returnRegex.Replace(s,@"s",string.Empty).ToUpper();当我想在LINQ中使用此方法时,如下所示:staticvoidGetHaendler(){using(varriaService=newgkmRia()){varhladany="someone";varhaendlers=来自riaService.GetGkmHaendlerOutlet()中的hndlr,其中hndlr.NameOutlet.NoWhiteSpaces()==hladany。NoWhiteSpaces()选择hndlr;Console.Write(haendlers.First().NameOutlet);我收到此错误消息:LINQtoEntities无法识别“System.StringNoWhiteSpaces(System.String)”方法,并且此方法无法转换为存储表达式。有没有解决方案谢谢你的时间。由于LINQtoEntities需要能够将表??达式转换为无法用您的方法执行的SQL语句,因此无法使用LINQtoEntities的自定义方法或属性。一种方法是绕过LINQtoEntities,而是使用LINQtoObjectsusingEnumerable而不是Queryable(注意下面代码中的AsEnumerable()):staticvoidGetHaendler(){using(varriaService=newgkmRia()){varhladany=“某人”;varhaendlers=fromhndlrinriaService.GetGkmHaendlerOutlet().AsEnumerable()wherehndlr.NameOutlet.NoWhiteSpaces()==hladany.NoWhiteSpaces()选择hndlr;Console.Write(haendlers.First().NameOutlet);请注意,这会导致查询在应用程序而不是数据库中执行,因此可能会对性能产生一些影响。如果可能,最好更改查询,以便可以使用EntityFramework支持的方法来表达它。LINQtoEntities支持的替换表达式如下:varhladany="someone".NoWhiteSpaces();varhaenflers=fromhndlrinriaService.GetGkmHaendlerOutlet().wherehndlr.NameOutlet.Replace("","").Replace("t","")==hladanyselecthndlr;此示例仅处理空格和制表符(正则表达式也处理不同的空白字符),但我不知道您的确切要求,这可能就足够了。您可以随时链接更多Replace调用以执行其他替换。LINQtoEntities尝试将每个调用的方法转换为执行的数据库查询的一部分。当尝试翻译您的方法时,它失败了,因为它不知道如何在SQL中表示它。您可以通过它们绕过它。以上就是C#学习教程:使用自己的LINQtoEntities方法,分享全部内容。收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
