c# - EF Core 3 使用扩展方法过滤数据

标签 c# entity-framework

我正在尝试创建扩展方法来查询 ef core。我有这个扩展:

 public static class FiltrExtension
  {
     public static IQueryable<Contract> Filtr(this IQueryable<Contract> query, OrderFilter filter) 
     {
      if (!string.IsNullOrWhiteSpace(filter.OrderType))
         query.Where(x => x.OrderType == filter.OrderType);
      return query;
     }
  }

然后我尝试过滤数据,但扩展方法什么也不做:

var data = await _uow.DatabaseContext.Contract.Filtr(filter).ToListAsync();

有人可以帮忙吗?

最佳答案

您应该将 query.Where(x => x.OrderType == filter.OrderType); 的结果放入 query 中,如下所示

public static class FiltrExtension
  {
     public static IQueryable<Contract> Filtr(this IQueryable<Contract> query, OrderFilter filter) 
     {
      if (!string.IsNullOrWhiteSpace(filter.OrderType))
        query = query.Where(x => x.OrderType == filter.OrderType);
      return query;
     }
  }

关于c# - EF Core 3 使用扩展方法过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61031224/

相关文章:

c# - 区分 EF 查询和 LINQ 查询

c# - Linq to DataTable 无需枚举字段

c# - 使用 XDocument 生成具有多个命名空间的 XML

mysql - 部署 - 带有 Entity Framework 的 MySQL

c# - 我想使用 Entity Framework + ASP Identity 但我不想让 EF 为我生成表

c# - Entity Framework 可以查询数据但不能保存

C# Entity Framework 自定义约束

c# - Windows 服务突然停止

c# - 如何在 Pace.js 中使用 ASP.NET Core SignalR

php - 两个实体之间的 Symfony2 关系