我使用这个表达式来获取所有产品:LINQ to SQL的嵌套式
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 Expression替换函数CalculateAvg,以便只有一个调用到DB?
编辑:
功能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)
);
}
'CalculateAvg'看起来怎么样?请显示代码 – 2013-02-22 13:20:01
尝试返回'IQuerable'而不是(删除'Convert.ToDecimal') –
Magnus
2013-02-22 13:39:21
可以发布更多的代码,你的表情看起来如何?你确定多个电话是因为这个功能吗,不是因为你的表达的其他部分可能会做某些事情吗? – Raxr 2013-02-22 13:41:15