【发布时间】:2016-12-22 12:01:27
【问题描述】:
我目前有几张桌子,但相关的是Restaurant 和Review。每个餐厅可以有多个评价,但一个评价只有 1 个餐厅。
现在,当我从数据库中检索餐厅时,我希望从每家餐厅的评论中获得他们的平均评分。
我根据到给定位置的距离来选择餐厅。
目前,我已经做到了这一点:
public IEnumerable<Restaurant> GetRestaurantsCloseToCoords(DbGeography coordinates, int amountOfRestaurants)
{
using (var ctx = _context)
{
var data = ctx.Restaurants.OrderBy(x => x.Address.Coordinates.Distance(coordinates))
.Take(amountOfRestaurants)
.ToList();
return data;
}
}
我的餐厅对象如下所示:
public class Restaurant
{
public Guid Id { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
public List<Tag> Tags { get; set; } = new List<Tag>();
public int PriceRange { get; set; }
public double AverageRating { get; set; }
}
我可以使用 for 循环并计算该列表中每家餐厅的平均值,但我很确定它非常慢。
有人可以帮助我吗?我更愿意将其保留在 LINQ 中,但其他技术也完全可以!
如果我需要详细说明,请告诉我,提前谢谢!
【问题讨论】: