如果您能想出改进方法,请编辑标题。
我现在有一个包含数十行的表,但最终会生成数百个,最终可能有数千个。我需要计算有多少具有某些特征,例如将枚举属性设置为目标枚举。
为了这个问题,我们会说我的模型中有:
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
方法中添加这些计数器。
答案 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方法中的这些计数器。
我不确定你的意思,但你不能在控制器变量中保留一些东西,因为控制器是为每个请求创建的,并在请求处理后销毁。您可以将这些数据保存在单独的商店中,但我认为这是不必要的并发症。