2009-06-15 82 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