2 回答
TA贡献1847条经验 获得超11个赞
首先很抱歉来晚了...
但正如 Gert Arnold 所说,这一切都会在记忆中完成。因此 EF 将获取内存中包含产品评论的整个产品表,这对性能来说可能是灾难性的。
您可能想要做的是(2 是更好的方法):
如果您真的想继续使用您的扩展方法,请将产品和产品评论中所需的属性投影到虚拟机中,然后进行过滤。
只需使用 sql 为您提供的平均方法
TA贡献1864条经验 获得超6个赞
EF 中的扩展方法没有问题。该错误与错误的数据类型有关。所以请尝试这种方式
public static class Extensions
{
public static decimal CalculateAverageRating(this IAsyncEnumerable<ProductReview> productReviews)
{
// Calculate and return average rating
return averageRatings;
}
}
var products = _context.Products
.Include(pr => pr.ProductReviews)
.AsQueryable().ToAsyncEnumerable();
if(searchParams.Rating != 0)
products = products.Where(p => p.ProductReviews.CalculateAverageRating() == searchParams.Rating);
PS:我没有检查上面的代码
- 2 回答
- 0 关注
- 259 浏览
添加回答
举报
