我需要能够将 2 个 lambda 表达式合并为 1 个:
这将帮助我创建类型安全包含(对于 EF)的扩展。
现在您可以:
context.House
.Include(x => x.Doors.Doorknobs)
我希望能够将上述语句拆分成不同的方法。
有点像 IncludeDoorKnobs(查询,expressionFromRoot,expressionFromCurrentToChild)
那我想 - 将组合表达式包含到查询中 - 包括额外的 child (从当前)到该查询 - 调用其他类似的方法,包括树的另一部分。
我对 Lambda 的了解显然不足,我真的需要尽快了解它们,但现在,我不得不求助于 SOF...
最佳答案
使用 LINQ-to-SQL 这将是微不足道的;您只需使用 Expression.Invoke
告诉它在给定点使用现有的子表达式(带有参数替换)。但是,EF 不(或者我上次检查时不支持)支持这一点。
不幸的是,合并两个表达式的过程没有是......复杂的;您基本上需要完全重新构建内部树,手动替换参数之类的东西。我确实有一些代码可以做到这一点,但它远非简单(而且它不是“手头的”)。
但我想知道:它真的值得这么复杂吗?
关于c# - 将 lambda 表达式组合到属性路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995142/