为什么将 Count 与 IQueryable 一起使用被认为是不可行的

2024-01-05

如果我有以下代码:-

IQueryable<People> list = repository.FindAllPeople;  
int count = list.Count(); 

那么是否认为对 IQueryable 对象进行计数是不可行的,而使用 IEnumerable 更好呢? BR


你被误导了。

IEnumerable将使用 Linq to 对象,所有方法都在对象上执行在记忆中. - IQueryable将使用特定提供者提供的 Linq 扩展方法的任何实现。在这种情况下(存储库),我猜测它很可能是一个将 Linq 表达式映射到数据库语句的提供程序。

这意味着如果你使用IQueryable:

IQueryable<People> list = repository.FindAllPeople;  
int count = list.Count(); 

计数由数据库本身确定,即作为查询"select count(*) from People"。这通常非常非常快。

如果你使用IEnumerable:

IEnumerable<People> list = repository.FindAllPeople;  
int count = list.Count(); 

当 Linq to object 迭代集合以确定计数时,所有 People 实例都将一一具体化到内存中。这将非常缓慢,应尽可能避免。

由于并非所有方法调用都可以映射到数据库查询,因此有时不可避免地要使用IEnumerable,但如果可能的话,所有过滤、连接和分组都应该在 IQueryable 上完成,然后作为最后一步,您可以使用AsEnumerable()切换到使用的扩展方法IEnumerable和 Linq 到对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么将 Count 与 IQueryable 一起使用被认为是不可行的 的相关文章

  • HTTP请求的内容长度>正文大小

    我正在管理一个网站 该网站过去几个月在使用 MVC 3 0 ASP net 构建的 IIS 7 5 上运行良好 当我们的 AJAX POST 请求 通过 jQuery 触发 因发布的 JSON 被截断而失败时 我们时不时地会遇到一个问题 到
  • 运行 MVC3 应用程序时出错

    我有 Visual Studio 2010 最近我在使用MVC2 由于某种原因我在我的计算机上安装了MVC3 一切都运转良好 直到今天 Now when I am creating new project I am getting belo
  • MVC3 RESTful API 路由和 Http 动词处理

    我想为我的 MVC3 应用程序构建 RESTful Json Api 我需要帮助处理多个 Http Verbs 以操作单个对象实例 我读过 研究过 尝试过的内容 MVC 属性 HttpGet HttpPost等 允许我拥有一个具有多个共享相
  • 在 MVC3 Razor 视图中引用 EntityFramework 4.1 命名空间

    我试图在我的 MVC3 项目中的共享视图内引用 System Data Entity Validation EF 4 1 版本 命名空间 我已经能够使用以下方式引用其他外部库 using Example Namespace 然而 当涉及到作
  • jQueryUI autoComplete 返回空列表

    在我的 asp net mvc3 应用程序中 我为搜索框添加了自动完成功能 当我测试它时 该操作返回了 3 个结果 您可以看到显示了一个列表 但是 这是一个空列表 您只看到 3 个 并且 li 标记之间没有任何内容 我很确定 操作没问题 因
  • 使用 Signalr 拥有类似 facebook 的通知系统

    我想在 ASP NET MVC 3 中实现一个类似 facebook 的通知系统 通知被发送到特定用户 以通知他对其某个项目进行操作 signalr适合这样的要求吗 我如何使用 SignalR 向特定用户 该用户的所有打开的会话 发送通知
  • 在 asp.net mvc 3 中使用 Last-Modified 标头和 OutputCacheAttribute 进行客户端缓存

    Edited 我想在客户端缓存图像 并且知道在 mvc 3 中有不同的方法可以做到这一点 如果我错了 请纠正我 1 你可以使用OutputCacheAttribute其工作原理是Expireshttp 标头 但它会回来304 Not Mod
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • ASP.NET 视图中的区域?

    我正在使用 razor 引擎制作 ASP NET MVC 应用程序 我想知道是否可以使用Regions http msdn microsoft com en us library 9a1ybwek aspx在一个视图中 就像是 region
  • MVC ASP.NET 或 Razor

    我对 MVC 很陌生 我对 Silver light WPF 和 MVVM 有相当多的了解 但对 MVC 知之甚少 我正在按照 Microsoft 网站上的主要教程进行操作http www asp net mvc tutorials get
  • 如何将 DataTable 转换为动态对象?

    我怎样才能转换DataTable in IEnumerable
  • ASP.NET MVC3:packages.config 的用途是什么?

    asp net MVC packages config 的用途是什么 我是否需要其中的项目来反映站点 应用程序中使用的内容 该文件由 NuGet 基础结构管理 它用于跟踪已安装的软件包及其各自的版本 如果您安装了 ASP NET MVC 3
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • Apress Pro Asp.net MVC Framework 3 - SportsStore 编辑产品无法正常工作?

    大家好 有人购买了 Apress Pro Asp net MVC Framework 3 的 ALPHA 并创建了 SportsStore 吗 我无法终生编辑产品并成功更新数据库吗 没有显示错误 单元测试全部功能 但没有成功的 编辑 即我更
  • IE提示打开或保存服务器的json结果

    兼容模式下的Internet Explorer通过ajax回调方法从服务器获取数据 如果我想保存数据或打开数据 会弹出一个对话框 如何摆脱它 客户说 ajax type POST data UIdlgHolder gt form seria
  • MVC 3 不会提供 Areas 子文件夹中的内容文件

    我有一个 MVC3 应用程序 其中有几个区域和一个可移植区域 使用 MVCContrib 通常 我将所有内容文件保存在 Content 下 将脚本保存在 Scripts 下 然而 我正在为我的网站上的另一个服务构建一个相当复杂的网络客户端
  • ASP.NET MVC区域命名空间问题

    我在我的 asp net mvc 3 解决方案中创建一个名为的新区域admin Visual Studio 自动分配名称空间 MyApp areas admin controllers 我将其更改为MyApp admin controlle
  • 为什么我找不到 RadioButtonFor 方法?

    这是我的静态类 using System using System Collections Generic using System Linq using System Web Mvc using System Linq Expressio
  • 当我只有一个简短的显示名称时如何获取枚举?

    我得到一个短显示名称 我需要使用它来获取枚举值 Display Name Alabama ShortName AL Alabama 1 我刚刚从外部数据库获取 AL 我需要以某种方式读取我的枚举并获得正确的值 感谢大家的帮助 jasel我稍
  • HTML 帮助器类方法不起作用

    我被 Steven Sanderson Adum Freeman Pro ASP Net MVC 3 的参考书困住了 我已经读到了第 185 页 其中使用 HTML 帮助程序返回链接中的页面编号 我在这个网站上找到了帮助解决我与这本参考书有

随机推荐