この式を使用して、すべての製品を取得しています。
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 を使用して、製品の平均価格を計算しています。このコードをいくつかの場所で使用しているため、計算は別の関数になっています。ただし、このアプローチでは、データベースへの複数の呼び出しが発生します。DBへの呼び出しを1回だけにするために、関数CalculateAvgをLinq Expressionに置き換えることは可能ですか?
編集:
関数 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)
);
}