有效计算数据库中具有某些特征的对象数量的方法

时间:2017-07-06 14:59:01

标签: c# asp.net asp.net-mvc entity-framework

如果您能想出改进方法,请编辑标题。

我现在有一个包含数十行的表,但最终会生成数百个,最终可能有数千个。我需要计算有多少具有某些特征,例如将枚举属性设置为目标枚举。

为了这个问题,我们会说我的模型中有:

public enum Types { One, Two, Three, Four }
public Types Type = Types.One; // Or Two, etc.

目前,每次访问列出这些条目的索引页面时,我都会枚举({)} One, Two, Three, Four的计数器并将其显示在页面顶部。

现行方法:
- 遍历表中的每个对象,检查其属性,并递增相关的计数器 - 每次加载列表

潜在方法:
- LINQ是否更快?即db.MySet.Where(obj => obj.Type == Model.Types.One)
- 我可以随时将这些计数器保存在内存中吗?不知道该怎么做。如果可能,可能的解决方案是在MyModelController.Create方法中添加这些计数器。

1 个答案:

答案 0 :(得分:1)

  

潜在方法:    - LINQ是否更快?即db.MySet.Where(obj => obj.Type == Model.Types.One)

LINQ会更好更快。实际上所有的工作都是SQL Server - 而不是你的应用程序,SQL Server针对这些任务进行了优化。用于计算对象的更好的LINQ代码是db.MySet.Count(obj => obj.Type == Model.Types.One)

  
      
  • 我可以随时将这些计数器保存在内存中吗?不知道该怎么做。如果可能的话,潜在的解决方案将会增加   MyModelController.Create方法中的这些计数器。
  •   

我不确定你的意思,但你不能在控制器变量中保留一些东西,因为控制器是为每个请求创建的,并在请求处理后销毁。您可以将这些数据保存在单独的商店中,但我认为这是不必要的并发症。