是否可以在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
答案 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)