在LINQ中使用外部函数

时间:2011-03-30 12:44:21

标签: linq function

是否可以在linq select resault中使用外部功能? 以及如何将param传递给它?

sub x
Dim q = From a In contex Select New With {.z=z("MYNAME")}
end sub

function z(name as string)
return( name & "Something...")
end function

2 个答案:

答案 0 :(得分:1)

这取决于选择的提供者。使用normal LINQ over IEnumerable查询(a.k.a. LINQ to Objects)即可。但是,对于大多数LINQ over Expression树(例如LINQ to SQL,LINQ to Entities,NHibernate,LLBLGen等),你不能。这些提供程序将表达式树转换为其他语言,例如SQL,AD,SharePoint等等。他们只是不知道如何处理自定义方法。

您可以通过多种方式解决此问题。例如,尝试在查询中内联编写方法的代码。通过这种方式,提供商知道如何处理它。另一种选择是让方法在表达式树之外调用。例如(对不起我的C#):

var q = (from a in context select a).AsEnumerable();

// q is an IEnumerable and the z method will be called by .NET instead
// of being translated to SQL.
var q2 = (from a in q select new { z = z("MYNAME") };

答案 1 :(得分:0)

在StackOverflow上已经回答并解释了here。请看一看。 并且可以找到您正在尝试做的完整解释here