登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
.NET开发中3秒判断该用 IEnumerable 还是 IQueryable ...
.NET开发中3秒判断该用 IEnumerable 还是 IQueryable
[ 复制链接 ]
靳谷雪
2025-10-6 12:25:29
在.NET开发中,IEnumerable和IQueryable是处理数据集合时最常用的两个接口。很多开发者对它们的选择感到困惑,但其实只需要掌握几个关键点就能快速做出正确决策。
核心区别:执行位置
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查询
复制代码
性能提示
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
NET
开发
3秒
判断
该用
相关帖子
基于Python的FastAPI后端开发框架如何使用PyInstaller 进行打包与部署
一款基于 .NET 开源免费、高效且用户友好文件搜索工具!
FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作
【一步步开发AI运动APP】十二、自定义扩展新运动项目03
记一次的AI Agent开发的思维误区
C# 13 与 .NET 9 跨平台开发实战(第一章:开发环境搭建与.NET概述-上篇)
ADO.NET Data Service中更新和查询一对多实体集的注意事项
Jenkins Share Library教程 —— 开发入门
【一步步开发AI运动APP】十二、自定义扩展新运动项目01
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
基于Python的FastAPI后端开发框架如何使用PyInstaller 进行打包与部署
0
335
喜及眩
2025-10-12
业界
一款基于 .NET 开源免费、高效且用户友好文件搜索工具!
0
218
糙昧邵
2025-10-12
业界
FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作
0
818
龙骋唧
2025-10-12
安全
【一步步开发AI运动APP】十二、自定义扩展新运动项目03
0
986
归悦可
2025-10-13
业界
记一次的AI Agent开发的思维误区
0
286
何玲
2025-10-13
业界
C# 13 与 .NET 9 跨平台开发实战(第一章:开发环境搭建与.NET概述-上篇)
0
717
尝琨
2025-10-13
业界
ADO.NET Data Service中更新和查询一对多实体集的注意事项
0
701
昝琳怡
2025-10-13
安全
Jenkins Share Library教程 —— 开发入门
0
547
泠邸
2025-10-13
安全
【一步步开发AI运动APP】十二、自定义扩展新运动项目01
0
953
羽桑
2025-10-13
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
靳谷雪
2025-10-6 12:25:29
关注
0
粉丝关注
14
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994888
dage888
999994
3934307807
993678
4
富账慕
10004
5
刎唇
9993
6
柴古香
9989
7
烯八
9972
8
匝抽
9986
9
筒濂
9977
10
孙淼淼
9983
查看更多