gru*_*ber 3 c# linq linq-to-sql
是否可以使用自定义方法在查询中例如:
var result = from u in context.MyTable where MyMethod(u) == 10 select u;
Run Code Online (Sandbox Code Playgroud)
正如Pranay所解释的那样,您不能将自定义(C#)方法作为LINQ to SQL查询的一部分,因为LINQ to SQL无法查看方法的表达式树,因此无法将其转换为SQL.
您有一个选择是在SQL中编写函数并将其作为SQL函数存储在SQL Server上(可能,您也可以使用SQL CLR,但我还没有尝试过).然后,您可以将函数添加到您的DataContext类型,LINQ to SQL将它转换为对SQL服务器上的函数的调用.就像是:
var result = from u in context.MyTable
where context.MyMethod(u) == 10 select u;
Run Code Online (Sandbox Code Playgroud)
当然,问题是你需要在SQL中编写函数(我认为SQL CLR也可以工作 - 不确定性能和其他可能的复杂性)
我还写了一篇文章(前一段时间),它说明当你将"方法"作为表达式方式(作为类型的值Expression<Func<...>>)编写时,如何做到这一点,这是可能的,因为在这种情况下,代码被编译为表达树.但是,必须完成一些后处理,您仍然可以只编写一个可以在LINQ查询中轻松内联的表达式.