【发布时间】:2012-11-01 09:03:33
【问题描述】:
在我的 ASP 项目中有这样的代码,用RegulationGroups 填充rr
private IEnumerable<RegulationGroup> LoadRegulations(string moduleName)
{
// database calls
yield return subLrg;
}
在单独的类中,代码循环多次
foreach (RegulationGroup rg in rr.RegulationGroups)
{
}
每次代码在RegulationGroups 上循环时,都会发生数据库调用。如何避免数据库调用?
我觉得可以
- 取消
yield return并使用List - 将
IEnumerable缓存在一个列表中并在我的模块中使用它,这样它就不会影响使用LoadRegulations方法的任何其他代码。
【问题讨论】:
-
旁注:您的变量名称是 smwht shrtnd。请考虑在公共代码中使用可合理理解的名称(或明显是假的)。
-
您也很可能不需要
yield return这些项目。AsEnumerable很有可能也能正常工作,而且效率会更高。
标签: c# asp.net yield-return