是否可以在 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。然后替换你需要的位。
我从没说过它会很漂亮...
这是我想要实现的目标的一个简化示例,我不确定它是否可行,或者我这样做是否完全错误。
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。然后替换你需要的位。
我从没说过它会很漂亮...