c# - 表达式查询中的动态 Lambda 表达式

标签 c# .net linq entity-framework lambda

是否可以在查询表达式中使用动态 Linq 表达式? 像这样:

from obj1 in ObjectSet1
let res = ObjectSet2.Where(* SomeExpression *)
where ...
select ...

我正在尝试构建 Expression.Lambda<Func<TSource, bool>>表达式为 SomeExpression。

  1. 是否可以在表达式查询中使用动态 Linq 表达式,或者我是否需要从头开始构建整个表达式树?
  2. 在构建 SomeExpression 时如何使用 obj1(如果有)?

注意:我正在使用 Entity Framework,我不能在表达式树中使用 SomeExpression.Compile()。

最佳答案

这不仅可能,而且很正常。可以从较小的树生成较大的表达式树(LINQ 就是这样做的)。你只需要传入一个 Expression<Func<TSource, bool>>Where() .

您可以在此处看到我对其他主题的回复 - replacing operator in Where clause Lambda with a parameter .有趣的部分在 MakeWhereLambda 中方法。

关于c# - 表达式查询中的动态 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9674211/

相关文章:

c# - 如何用HttpClient替换WebClient?

c# - Visual Studio Code launchurl 不适用于 Web API

c# - 来自 SQLCLR 的异步 API 调用中的问题

c# - 旧列表的唯一值

c# - 从上一个位置恢复滚动时列表框跳到顶部

c# - 从 C# 代码隐藏 (.NET) 调用 JavaScript 函数时出现问题

c# - 从 C# 调用 Flash 方法 (MONO)

c# - 对特殊组进行分组和过滤的 LINQ 查询

c# - 查询语法有效,但 lambda 语法不适用于 linq select 语句

c# - 创建自定义绑定(bind)