【发布时间】:2019-11-21 07:40:57
【问题描述】:
我有经验实体 就是这样:
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; }
}
我需要按最高和最低价格、评级和 countryId 过滤它。
所以我写了这个方法
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;
}
但它仅按最低、最高价格过滤。我想按所有参数过滤它。我该怎么做?
【问题讨论】:
-
我认为你的问题是你没有使用括号。按照您想要的逻辑方式将您的条件分组在括号中。我认为它不会像您期望的那样分支。
标签: c# asp.net asp.net-mvc asp.net-core