2009-06-15 83 views
4

我需要能夠2個lambda表達式組合成1:結合lambda表達式財產路徑

這將有助於我創建的擴展類型安全包括(用於EF)。

現在你可以這樣做:

context.House 
.Include(x => x.Doors.Doorknobs) 

我希望能夠在上面的語句分成不同的方法。

像 IncludeDoorKnobs(查詢,expressionFromRoot,expressionFromCurrentToChild)

然後我想 - 包括組合表達式查詢 - 包括備用孩子的(從目前)到該查詢 - 呼叫其他類似的方法,包括樹的另一部分。

我拉姆達的知識清楚地說到短,我真的需要儘快進入他們,但現在,我不得不求助於壽SOF ...

回答

1

使用LINQ到SQL,這將是不重要的;您只需使用Expression.Invoke來告訴它在給定點使用現有的子表達式(帶參數替換)。但是,EF沒有(或者上次沒有檢查)支持這一點。

不幸的是,結合兩個表達式沒有的過程,這是...複雜;您基本上需要完全重新構建內部樹,對參數等內容進行手動替換。我確實有一些這樣做的代碼,但它遠非簡單(而且它不是「手」)。

但我想:是不是真的值得的複雜性?

+0

不,它不是。所以我想這適合作爲答案:-) – Bertvan 2009-06-15 13:34:46