当前位置: 首页 > news >正文

.NET开发中3秒判断该用 IEnumerable 还是 IQueryable

选择 IEnumerable 当:

1、数据已在内存中

// 数据来自内存集合

List<User> users = GetUsersFromMemory();

var result = users.Where(u => u.Age > 18); // 使用 IEnumerable

2、需要立即执行查询

var users = dbContext.Users.ToList() // 立即执行

.Where(u => u.Age > 18); // 在内存中过滤

3、使用LINQ to Objects功能

// 使用.NET方法而非SQL可翻译的方法

var result = users.Where(u => u.Name.Contains("John"))

.AsEnumerable() // 切换到内存操作

.Select(u => new { u.Name, Initial = u.Name[0] });

选择 IQueryable 当:

1、需要数据库端过滤

// 查询被转换为SQL并在数据库执行

var result = dbContext.Users

.Where(u => u.Age > 18) // 生成 SQL: WHERE Age > 18

.OrderBy(u => u.Name);

2、需要分页或聚合操作

// 只在数据库获取需要的记录

var pagedResult = dbContext.Users

.Where(u => u.IsActive)

.Skip(20).Take(10) // 生成分页SQL

.ToList();

3、构建动态查询

复制代码

IQueryable<User> query = dbContext.Users;

if (!string.IsNullOrEmpty(searchName))

query = query.Where(u => u.Name.Contains(searchName));

if (minAge.HasValue)

query = query.Where(u => u.Age >= minAge.Value);

var finalResult = query.ToList(); // 单一SQL查询

复制代码

性能提示💡错误用法:❌

// 这将加载整个表到内存!

var users = dbContext.Users.ToList()

.Where(u => u.Age > 18);

正确用法:✅

// 只在数据库查询需要的记录

var users = dbContext.Users

.Where(u => u.Age > 18)

.ToList();

总结

http://www.cnnetsun.cn/news/114846.html

相关文章:

  • DVWA -SQL Injection-通关教程-完结
  • AI大模型:未来就业的吞噬者还是创造者?揭秘其对普通人工作的影响!
  • 0x3f第七天 二叉搜索树
  • 扩容U盘,资料毁灭盘
  • 数据结构学习篇(5)---顺序表和链表的区别
  • 基于Vue.js和Spring Boot的新能源汽车充电站管理系统的设计与实现文献综述
  • 【Matlab】代码库:RGB三通道图像←互转→RGB次序平铺二维
  • 使用 html2canvas + jsPDF 生成PDF 的简单示例(含文字下沉修复)
  • Vue3+Monaco Editor封装及SQL编辑器实现
  • MiniCPM-V 4.5
  • Flutter工程化与协作实践指南
  • Excel技巧:提取身份证号码中的出生年月日
  • 软工毕业设计创新的开题分享
  • Oracle数据库物理备份与恢复实战指南
  • 告别“养死”魔咒!AI+知识库+物联网,打造零失败智能种植系统(附架构图+实操指南)
  • 安卓基础之《(4)—Activity组件(2)》
  • 打破数据堵点:6 大主流CRM厂商全链路数据流转能力横评与选型指南
  • 小程序毕设项目:基于springboot+微信小程序的校园活动管理系统设计与实现(源码+文档,讲解、 调试运行,定制等)
  • 小程序毕设项目:基于springboot+微信小程序的DIY电脑推荐与交流平台(源码+文档,讲解、 调试运行,定制等)
  • 小程序毕设项目:基于springboot+微信小程序的在线复习小程序(源码+文档,讲解、 调试运行,定制等)
  • 安徽做SCARA机器人的公司有哪些?
  • 【JavaWeb】MVC模式_理论简介
  • 【JavaWeb】日程管理01——登录页及数据校验功能
  • springboot中File默认路径
  • 【2025年AI 编程时代的热点】
  • 【C++ 笔记】从 C 到 C++:核心过渡 (中)
  • SQL约束解析
  • 地铁调研12-17
  • 现代软件测试工具全景对比与选型指南
  • 基于 Apache POI 的体检报告 Word 生成实战文档