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

标签 c# lambda

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

相关文章:

c++ - 完美转发到异步 lambda

java - 在 Stream API 中使用 checked 装饰器函数是好的解决方案吗?

c# - 如何在 asp.net 页面中的页面启动时初始化对象

c# - 如何在 IIS 6.0 服务器上强制下载文件

c# - Elasticsearch Nest客户端未应用提升

c# - 在显式 LINQ-to-SQL (C#) 中,顺序很重要吗?

c# - 使用 LINQ 和 Entity Framework 检查 c# var 中的空值

c# - 在 XML 中搜索 double 值

c# - Entity Framework 如何遍历一个太大的集合?

java - 使用一系列 lambda 函数来定义类功能是否合适?