是否可以在查询中使用自定义方法,例如:
var result = from u in context.MyTable where MyMethod(u) == 10 select u;
正如 Pranay 所解释的,您不能将自定义 (C#) 方法作为 LINQ to SQL 查询的一部分,因为 LINQ to SQL 无法查看该方法的表达式树,因此无法将其转换为 SQL。
您可以选择的一种选择是用 SQL 编写函数并将其作为 SQL 函数存储在 SQL Server 上(您也可以使用 SQL CLR,但我还没有尝试过)。然后您可以将该功能添加到您的DataContext
类型,LINQ to SQL 会将其转换为对 SQL Server 上函数的调用。就像是:
var result = from u in context.MyTable
where context.MyMethod(u) == 10 select u;
当然,问题是您需要用 SQL 编写该函数(我认为 SQL CLR 也可以工作 - 但不确定性能和其他可能的复杂情况)
I also 写了一篇文章 http://tomasp.net/blog/linq-expand.aspx(不久前)它展示了当您将“方法”编写为表达式树方式(作为类型的值)时如何执行此操作Expression<Func<...>>
),这是可能的,因为在这种情况下,代码被编译为表达式树。但是,必须完成一些后处理,并且您仍然可以只编写一个可以轻松内联到 LINQ 查询中的表达式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)