是否可以在 Linq 查询语法中引用 ParameterExpression?

Is it possible to reference a ParameterExpression inside Linq query syntax?

这是我想要实现的目标的一个简化示例,我不确定它是否可行,或者我这样做是否完全错误。

Expression<T, bool> UseDataContext<T>(Expression<Func<DataContext, T, bool>> expr, Expression dataContextExpr){
    // use ExpressionVisitor and return new LambaExpression
}    

Expression<Func<DataContext, Foo, bool>> fooFilterExpr = (db, foo) 
    => db.FilteredFoos.Any(vf => vf.FooId == foo.Id);

Expression<Func<DataContext, Bar, bool>> barExpr = (db) => (
    from bar in db.Bars
    join foo in db.Foos.Where(UseDataContext(fooFilterExpr, ?db Expression?))
    select bar
);

基本上不直接。这不是语法中可用的东西。您必须为此手动创建所有 lambda。

建议:采用一个简化但可行的示例,并通过 https://sharplab.io/ 将其 运行 指定为 "Results" - 这将为您提供执行此操作的手动代码,包括ParameterExpression,然后您可以使用它来将其替换为手动编写的版本; example。然后替换你需要的位。

我从没说过它会很漂亮...