假设我有这样的函数:
var filterValue = GetCurrentFilter(state);
Run Code Online (Sandbox Code Playgroud)
然后是EF查询:
var result = context.EntitySet.Where(x=> x.column > filterValue);
Run Code Online (Sandbox Code Playgroud)
这有效,但一旦我试图内联:
var result = context.EntitySet.Where(x=> x.column > GetCurrentFilter(state));
Run Code Online (Sandbox Code Playgroud)
它不是因为EF Linq试图解析GetCurrentFilter到表达式树而无法做到这一点.这一切都是可以理解的.
我的问题是,有没有办法让EF Linq知道在GetCurrentFilter构建树时需要执行函数并在树中使用它的结果?
就像是
var result = context.EntitySet.Where(x=> x.column > EfUtil.ResultOf(GetCurrentFilter(state)));
Run Code Online (Sandbox Code Playgroud)
由于GetCurrentFilter没有参数作为查询的一部分,因此如果EF Linq可以支持它,那么技术上应该可以做到这一点.我怀疑我只是错过了正确的语法.