У меня есть объект опыта. Вот оно:
public class Experience:BaseEntity
{
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual DateTime? CreationDate { get; set; }
public virtual string City { get; set; }
public virtual int Price { get; set; }
public Currency Currency { get; set; }
public virtual int Rating { get; set; }
public virtual double? Lat { get; set; }
public virtual double? Lng { get; set; }
public virtual DateTime? CompleteDate { get; set; }
public virtual string CoverPic { get; set; }
public virtual string Images { get; set; }
public virtual string BroadcastingType { get; set; }
public virtual bool IsActive { get; set; }
public virtual bool IsFinished { get; set; }
public virtual bool IsConfirmed { get; set; }
public virtual int CountryId { get; set; }
[ForeignKey("CountryId")]
public virtual Country Country { get; set; }
public virtual string UserId { get; set; }
[ForeignKey("UserId")]
public virtual AppUser IdentityUser { get; set; }
public virtual ICollection<Proposals.Proposals> Proposals { get; set; }
public virtual ICollection<Comments.Comments> Comments { get; set; }
}
Мне нужно отфильтровать его по максимальной и минимальной цене, рейтингу и идентификатору страны.
Итак, я написал этот метод
public async Task<List<ExperienceListDto>> GetFilteredExperiences(FilterExperienceDto filterExperience)
{
var experiences = await _context.Experiences.Where(x =>
x.Price >= filterExperience.MinPrice && x.Price <= filterExperience.MaxPrice &&
filterExperience.MinPrice.HasValue && filterExperience.MaxPrice.HasValue ||
x.Rating == filterExperience.Rating && filterExperience.Rating.HasValue ||
x.CountryId == filterExperience.CountryId && filterExperience.CountryId.HasValue)
.ProjectTo<ExperienceListDto>().ToListAsync();
return experiences;
}
Но он фильтрует только по минимальной, максимальной цене. Я хочу отфильтровать его по всем параметрам. Как я могу это сделать?