2011-03-30 88 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") };