C# 返回缓慢的数据库调用
在我的ASP项目中,有这样的代码,用C# 返回缓慢的数据库调用,c#,asp.net,yield-return,C#,Asp.net,Yield Return,在我的ASP项目中,有这样的代码,用regulationgroup private IEnumerable<RegulationGroup> LoadRegulations(string moduleName) { // database calls yield return subLrg; } 每次代码在regulationgroup上循环时,都会发生数据库调用。如何避免数据库调用 我想我可以 取消收益回报并使用列表 将IEnumerable缓存在列表中,并在
regulationgroup
private IEnumerable<RegulationGroup> LoadRegulations(string moduleName)
{
// database calls
yield return subLrg;
}
每次代码在regulationgroup
上循环时,都会发生数据库调用。如何避免数据库调用
我想我可以
收益回报
并使用列表
IEnumerable
缓存在列表中,并在我的模块中使用它,以便它不会影响使用LoadRegulations
方法的任何其他代码ToList()
:
这是由于收益回报的延迟执行的性质造成的
您可以通过具体化查询来避免它,例如使用ToList()
:
这是由于收益回报的延迟执行的性质造成的
旁注:您的变量名是smwht shrtnd。请考虑在公共代码中使用合理可理解的名称(或明显伪造)。您也很可能不需要<代码>收益率< /代码>项。很有可能AsEnumerable
也能正常工作,而且效率更高。旁注:您的变量名是smwht shrtnd。请考虑在公共代码中使用合理可理解的名称(或明显伪造)。您也很可能不需要<代码>收益率< /代码>项。很有可能AsEnumerable
也会起到同样的作用,而且效率会更高一些。我在问题中没有看到任何关于LINQ的提及yield return
也使用延迟执行,但说它是由LINQ中的某些内容引起的是不准确的。是的,除了现在这个链接没有意义,因为它谈论的是LINQ,而不是yield return
:-)我看不到在问题中提到林克yield return
也使用延迟执行,但说它是由LINQ中的某些内容引起的是不准确的。是的,除了现在这个链接没有意义,因为它谈论的是LINQ,而不是yield return
:-)
foreach (RegulationGroup rg in rr.RegulationGroups)
{
}
var regulations = LoadRegulations("moduleName").ToList();