Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回缓慢的数据库调用_C#_Asp.net_Yield Return - Fatal编程技术网

C# 返回缓慢的数据库调用

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缓存在列表中,并在

在我的ASP项目中,有这样的代码,用
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();