You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询IEnumerable的作用及ASP.NET MVC中GetRoles方法代码解析

IEnumerable的作用及代码解析

一、IEnumerable的核心作用

  • 是.NET里最基础的集合遍历接口,只要实现它的类型,都能用foreach循环遍历元素,是统一遍历各种集合的标准。
  • 支持延迟执行:默认不会一次性把所有数据加载到内存,适合处理大数据量,能有效节省内存开销。
  • 作为方法返回类型时,提供了抽象性:调用方只需要知道“能遍历拿数据”,不用管底层是List、数组还是别的集合,降低代码耦合度。

二、代码中标记行的功能拆解

1. public IEnumerable<Role> GetRoles()

这是一个公共方法的定义:

  • public:允许外部类调用这个方法。
  • IEnumerable<Role>:规定方法返回一个可遍历的Role类型集合,调用方可以通过遍历拿到所有角色数据。
  • GetRoles:方法名,从语义上就能看出这是用来获取角色列表的方法。

2. return con.Query<Role>("Usp_GetRoles", null, null, true, 0, CommandType.StoredProcedure).ToList();

这行是方法的核心业务逻辑,拆解开说:

  • con.Query<Role>(...):这是轻量级ORM框架Dapper的扩展方法,作用是执行名为Usp_GetRoles的存储过程,把查询到的数据库数据自动映射成Role类型的对象集合。里面的参数依次是:存储过程名称、传入存储过程的参数(null代表无参数)、事务对象(null代表不使用事务)、是否缓冲查询结果、命令超时时间、命令类型(明确指定是存储过程)。
  • .ToList():把Dapper返回的延迟执行结果立即转换成List<Role>。因为外层的using块会在代码执行完后销毁数据库连接,如果不立即执行查询,后续遍历的时候连接已经关闭,就会报错。
  • return:把这个List<Role>返回给调用方,因为List<Role>实现了IEnumerable<Role>接口,完全符合方法的返回类型要求。

内容的提问来源于stack exchange,提问作者Akshay Malvankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:36:11