2011-03-30 57 views
0

是它可以使用外部函数在LINQ选择resault? 以及如何将param传递给它?使用外部功能LINQ

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

你的代码有什么问题? – 2011-03-30 12:53:47

回答

0

已经在StackOverflow上回答并解释了here。请看一看。 和你正在尝试做完整的解释可以发现here

1

这取决于已选定的供应商。随着normal在LINQ查询IEnumerable(又名LINQ到对象),你可以做。但是,大多数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") };