我正在使用这个表达式来获取所有产品:
Expression<Func<Product, ProductInCityDto>> GetAllProducts
{
get
{
return product => new ProductInCityDto
{
ProductName = product.ProductName,
CityName = product.Store.City.Name,
CountryName = product.Store.City.Country.Name,
ProductAvgPrice = CalculateAvg(product)
.
.
.
}
}
}
我正在使用函数 CalculateAvg 来计算产品的平均价格。计算是在单独的函数中,因为我在几个地方使用了这个代码。但是,这种方法会导致对数据库的多次调用。是否可以用 Linq 表达式替换函数 CalculateAvg,以便只调用一次数据库?
编辑:
函数 CalculateAvg 看起来像这样:
public static decimal CalculateAvg(object tempObj)
{
Product obj = tempObj as Product;
return Convert.ToDecimal
(obj.Sales.Where(n => n.type != 1)
.Average(n=>n.Price)
);
}