登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
.NET开发中3秒判断该用 IEnumerable 还是 IQueryable ...
.NET开发中3秒判断该用 IEnumerable 还是 IQueryable
[ 复制链接 ]
靳谷雪
7 天前
在.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查询
复制代码
性能提示
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
靳谷雪
7 天前
关注
0
粉丝关注
14
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994888
dage888
999994
3934307807
993678
4
富账慕
10004
5
刎唇
9993
6
柴古香
9989
7
匝抽
9986
8
筒濂
9977
9
孙淼淼
9986
10
凌彦慧
9982
查看更多