我正在尝试使用 Ef 核心和 Ardalis 规范查询我的 postgresql 数据库。
对于我构建的查询,我想通过使用 OrderBy 和嵌套对象上的属性的聚合来对结果进行排序。
我想要的排序是按评分最高的诊所对诊所列表进行排序。等级为 1-5。
因此,如果一个诊所有两个评分为 5 的评论,它应该排在一个有 5 条评分为 2 或评分为 4 的评论的诊所之上。为此,我必须计算平均值,然后按最高值排序
public class Clinic
{
public int Id { get; set; }
public ICollection<Review> Reviews {get; set;}
}
public class Review
{
public int Id { get; set; }
public decimal Grade {get; set;}
}
到目前为止,我的查询没有按预期工作,因为它只能获得最高值。我可以以某种方式在这里插入平均值计算吗?
public ClinicFilterPaginatedSpecification()
{
Query.OrderByDescending(x => x.Reviews.Max(x => x.Grade ));
}
运行查询:
var filterSpec = new ClinicFilterSpecification();
var itemsOnPage= await _clinicRepo.ListAsync(filterSpec);