【发布时间】:2016-04-02 16:49:15
【问题描述】:
我已经编写了 som 代码,当我的数据库中有很多记录时,现在速度很慢。有人知道如何优化吗?
我有这个模型:
public class StockBalance
{
public double stockBalanceValue()
{
return stockBalanceProductItems.Where(x => x.productItemStatus == ProductStatus.InStock).Select(p => p.productItemPurchaes.purchaesPrice).Sum();
}
public double stockBalanceCount()
{
return stockBalanceProductItems.Where(x => x.productItemStatus == ProductStatus.InStock).Count();
}
}
public class Product
{
public double productQty()
{
return productStockBalance.Select(x => x.stockBalanceCount()).Sum();
}
}
当我在我的视图中想要这样做时,它可能需要 5 分钟来加载页面,我在 productItems 表中有 4000 条记录。我的表格是:Products、Stocks、StockBalance、ProductItems。
查看:
@Stock.stockStockBalance.Select(x => x.stockBalanceValue()).Sum()
@Stocks.Sum(x => x.stockStockBalance.Sum(m => m.stockBalanceValue()))
@Product.productQty()
【问题讨论】:
-
为什么要在模型中计算总和?什么是 stockbalanceProductItems?您的视图的模型类型是什么?你控制器做什么?有很多缺失的信息,请添加更多详细信息让我们提供帮助
-
Stocks.Sum(x => x.stockStockBalance.Sum(m => m.stockBalanceValue()))可以替换为Stocks.SelectMany(x => x.stockStockBalance).Sum(m => m.stockBalanceValue) -
并且在
productItemStatus上建立索引也会有所帮助
标签: c# linq optimization asp.net-mvc-5 sum