我的问题是如何在LINQ查询中调用函数?例如
source.Where(x=> double.Parse(x.Col1)==3)
或者
source.Where(x=> AnyUserFunction(x.Col1)==true)
基本上,我的要求是检查天气Col1是否为数值,但有时我也需要调用用户定义的函数。
问题是您的Linq to Entities提供程序不知道如何将自定义方法转换为SQL。@teovankot提出的解决方案是解决此问题的简便方法,但是如果您要使用Linq to Objects,我建议您改用AsEnumerable
扩展方法,ToList
因为AsEnumerable
在查询数据之前不执行查询,这样可以保留延迟执行,但是请小心,不要使用AsEnumerable
或整体ToList
上使用,DbSet
因为您将检索该表的所有行,从而影响应用程序的性能。
现在,如果您只想检查天气Col1
是否为数值,则另一个解决方案可以使用SqlFunctions.IsNumeric方法,该方法将转换为本机SQL:
using System.Data.Entity.SqlServer;
//...
source.Where(x=> SqlFunctions.IsNumeric(x.Col1)==1);
您可以找到另一组函数,也可以在DbFunctions
静态类中调用它们。SqlFunctions
是针对SQL Server的,而DbFunctions
并非如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句