我有以下扩展方法来计算产品的平均评级。
public static class Extensions
{
public static decimal CalculateAverageRating(this ICollection<ProductReview> productReviews)
{
// Calculate and return average rating
return averageRatings;
}
}
我想在EF可查询中使用此方法,如下所示:
var products = _context.Products
.Include(pr => pr.ProductReviews)
.AsQueryable();
if(searchParams.Rating != 0)
products = products.Where(p => p.ProductReviews.CalculateAverageRating() == searchParams.Rating);
但是我继续遇到错误“ArgumentException:类型'的表达式'System.Collections.Generic.IAsyncEnumerable1[Products.Reviews.ProductReview]' cannot be used for parameter of type 'System.Collections.Generic.IEnumerable
1 [System.Object]'方法”。
我们可以在EF中使用扩展方法吗?请就此向我提出建议。
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:我没有检查上面的代码