靳谷雪 发表于 2025-10-6 12:25:29

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

在.NET开发中,IEnumerable和IQueryable是处理数据集合时最常用的两个接口。很多开发者对它们的选择感到困惑,但其实只需要掌握几个关键点就能快速做出正确决策。
核心区别:执行位置

IEnumerable:在内存中执行查询操作
IQueryable:在数据源端执行查询操作
选择 IEnumerable 当:

1、数据已在内存中
// 数据来自内存集合
List<User> users = GetUsersFromMemory();
var result = users.Where(u => u.Age > 18); // 使用 IEnumerable2、需要立即执行查询
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 });选择 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查询性能提示
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

马璞玉 发表于 2025-10-21 00:06:00

这个有用。

讥慰捷 发表于 2025-10-24 00:44:50

yyds。多谢分享

接快背 发表于 2025-10-29 16:22:17

这个好,看起来很实用

敖雨燕 发表于 2025-11-14 06:44:34

喜欢鼓捣这些软件,现在用得少,谢谢分享!

湄圳啸 发表于 2025-12-6 15:41:11

不错,里面软件多更新就更好了

诈知 发表于 2025-12-13 00:06:26

感谢分享

袁曼妮 发表于 2025-12-15 02:12:53

新版吗?好像是停更了吧。

讣丢 发表于 2025-12-24 23:24:24

谢谢分享,试用一下

章海 发表于 2026-1-18 08:07:50

这个有用。

时思美 发表于 2026-1-18 13:42:38

过来提前占个楼

磁呃泵 发表于 2026-1-18 18:24:51

感谢发布原创作品,程序园因你更精彩

府扔影 发表于 2026-1-19 00:27:24

感谢,下载保存了

缄戈 发表于 2026-1-19 02:17:27

分享、互助 让互联网精神温暖你我

洪势 发表于 2026-1-20 10:52:49

懂技术并乐意极积无私分享的人越来越少。珍惜

粉押淫 发表于 2026-1-20 13:18:13

喜欢鼓捣这些软件,现在用得少,谢谢分享!

丧血槌 发表于 2026-1-21 14:11:27

谢谢分享,辛苦了

魄柜 发表于 2026-1-21 17:18:16

不错,里面软件多更新就更好了

臧莞然 发表于 2026-1-23 06:24:03

感谢分享

珠尿娜 发表于 2026-1-23 09:55:33

谢谢分享,试用一下
页: [1] 2
查看完整版本: .NET开发中3秒判断该用 IEnumerable 还是 IQueryable