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

时间:2018-04-19 14:41:32

标签: c# linq linq-expressions

这是我想要实现的一个简化示例,我不确定它是否可能或者我是否会这样做。

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
);

1 个答案:

答案 0 :(得分:1)

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

建议:采取一个简单但有效的示例,并通过https://sharplab.io/运行它,将C#指定为“结果” - 这将为您提供手动代码,包括ParameterExpression,您然后可以使用手动编写的版本替换它; example。然后替换你需要的位。

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

相关问题