gpt4 book ai didi

c# - 将 lambda 表达式组合到属性路径

转载 作者:行者123 更新时间:2023-11-30 12:53:59 26 4
gpt4 key购买 nike

我需要能够将 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com