EF Core 3 фильтрация данных с помощью метода Extension - PullRequest
1 голос
/ 04 апреля 2020

Я пытаюсь сделать метод расширения для запросов к ядру. У меня есть это расширение:

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

Может кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2020

Вы должны поместить результат 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;
     }
  }
0 голосов
/ 04 апреля 2020

Вы должны вернуть результаты:

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

Вы можете использовать регулярные выражения:

  public static IQueryable<Contract> And<Contract>(this IQueryable<Contract> source, Expression<Func<Contract, bool>> predicate)
    {   
      return source.Where(predicate);    
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...