Получение данных на основе фильтра (не обязательные поля) с использованием Entity Framework - PullRequest
0 голосов
/ 14 октября 2019

Мне нужно получить данные от сущности с именем Student, которая имеет поля (Id, Name, Age, Dob). И у меня есть объект запроса StudentFilter

public class StudentFilter 
{
      public int? Id {get;set;}
      public string Name {get;set;}
      public int Age {get;set;}
      public DateTime Dob {get;set;}
}

Теперь, основываясь на том, что мне нужно сформировать запрос с этими фильтрами и получить данные из базы данных:

public List<Student> Get(StudentFilter  request)
{
     if(request.Id.HasValue && request.Id > 0)
     {
     }

     if(request.Age.HasValue && request.Age > 0)
     {
     }

     if(request.Dob.HasValue)
     {
     }

     _context.<Student>.Get()
}

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

1 Ответ

0 голосов
/ 15 октября 2019

попробуйте это, соедините .Where в зависимости от ваших условий

var query = context.Students.AsQueryable();

if(request.Id.HasValue && request.Id > 0)
{
    //equal query
    query = query.Where(x => x.Id == request.Id.Value);
    /* greater than or less than and equal to query
    *query = query.Where(x => x.Id >= request.Id.Value) or query.Where(x => x.Id <= request.Id.Value) or query.Where(x => x.Id != request.Id.Value)
    */
}

if(request.Age.HasValue && request.Age > 0)
{
    query = query.Where(x => x.Id == request.Age.Value);
    //same applies to top depending on your condition, can be !=, <=, >= or between (< && >)
}

if(request.Dob.HasValue)
{
    query = query.Where(x => x.Id == request.Dob.Value);
    //same applies to top depending on your condition, can be !=, <=, >=
}

//the ONLY part which the query will be executed
var result = query.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...