【问题标题】:combining lambda expressions to property paths将 lambda 表达式组合到属性路径
【发布时间】:2009-06-15 17:36:41
【问题描述】:

我需要能够将 2 个 lambda 表达式组合成 1 个:

这将有助于我创建类型安全包含的扩展(对于 EF)。

现在你可以这样做了:

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

我希望能够将上述语句拆分为不同的方法。

类似的东西 IncludeDoorKnobs(query, expressionFromRoot, expressionFromCurrentToChild)

那我想 - 将组合表达式包含到查询中 - 包括额外的孩子(从当前)到该查询 - 调用其他类似的方法,包括树的另一部分。

我对 Lambda 的了解显然不足,我真的需要尽快了解它们,但现在,我不得不求助于 SOF...

【问题讨论】:

    标签: c# lambda


    【解决方案1】:

    对于 LINQ-to-SQL,这将是微不足道的;您只需使用Expression.Invoke 告诉它在给定点使用现有的子表达式(带参数替换)。但是,EF 不(或者我上次检查时不)支持这一点。

    不幸的是,合并两个表达式的过程没有 this……很复杂;您基本上需要完全重新构建内部树,手动替换参数之类的东西。我确实有一些代码可以做到这一点,但它远非简单(而且它不是“手头”)。

    但我想知道:它真的值得这么复杂吗?

    【讨论】:

    • 不,不是。所以我想这适合作为答案:-)
    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 2023-03-10
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2011-11-23
    相关资源
    最近更新 更多