我正在尝试创建一个可以在数据库端执行的编译查询。我的想法是在我的代码中创建一个可重用的函数。但EF Core仍然说这个查询无法转换为sql。
以下是可重复使用的
expression
public static class DisplayFilters
{
public static Expression<Func<DisplayItem, bool>> isActiveItem = (x) => x.IsDeleted == false;
}
这是EFCore实体调用
using df = namespace.DisplayFilters;
...
[HttpGet]
public IActionResult Get()
{
IEnumerable<DisplayItem> xItem = (from a in _context.DisplayItem.AsQueryable()
where df.isActiveItem.Compile()(a)
select a);
return Ok(xItem);
}
答案 0 :(得分:1)
我认为你不能在查询理解语法中嵌入Expression
类型表达式,但你可以用lambda语法来实现:
IEnumerable<DisplayItem> xItem = _context.DisplayItem
.Where(df.isActiveItem);