C# 在存储库模式中IQueryable与IEnumerable,延迟加载

C# 在存储库模式中IQueryable与IEnumerable,延迟加载,c#,.net,lazy-loading,iqueryable,C#,.net,Lazy Loading,Iqueryable,我读过一些文章,其中指出IEnumerable用于模拟存储过程或限制数据库。外部提供程序上的延迟加载功能丢失 在这里,我可以给开发者更多的灵活性。这里有延迟加载 就性能而言,两者都会消耗大量的性能。。那么哪一个更可取呢?从存储库模式的角度来看,您可以这样想: 当您想一次性将整个列表传递给客户机时,请使用快速加载IEnumerable。他们仍然可以添加linq子句,但是客户端不能从延迟执行中获益 当您希望通过允许客户端添加自己的linq子句来将延迟查询功能扩展到客户端时,请使用延迟加载IQuery

我读过一些文章,其中指出IEnumerable用于模拟存储过程或限制数据库。外部提供程序上的延迟加载功能丢失

在这里,我可以给开发者更多的灵活性。这里有延迟加载


就性能而言,两者都会消耗大量的性能。。那么哪一个更可取呢?

从存储库模式的角度来看,您可以这样想:

  • 当您想一次性将整个列表传递给客户机时,请使用快速加载
    IEnumerable
    。他们仍然可以添加linq子句,但是客户端不能从延迟执行中获益

  • 当您希望通过允许客户端添加自己的linq子句来将延迟查询功能扩展到客户端时,请使用延迟加载
    IQueryable
    。这将推迟整个查询的执行,直到需要输出为止

  • 另请参见

    IEnumerable和IQueryable之间的主要区别在于过滤器逻辑的执行位置。一个在客户端(内存中)执行,另一个在数据库上执行

    因此,当从内存集合(如列表、数组等)中查询数据时,应该使用IEnumerable

    另一方面,当从内存外(如远程数据库、服务)集合查询数据时,应使用IQueryable。


    IQueryable最适用于服务器端数据,而IEnumerable最适用于在客户端使用的数组/列表

    和往常一样…这取决于你到底需要什么…非常好的解释。这适用于.Net内核吗?这个问题没有标签,所以有点混乱。我发布了,不是针对.NETCore的