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

.NET LINQ内存数据操作:代码时间复杂度与遍历次数咨询

问题

假设elements是已加载到内存中的对象列表(非数据库查询),默认是泛型List,也可基于任意可迭代对象展开,核心关注点是LINQ表达式如何遍历内存数据结构。给出以下代码片段:

var filteredElements = elements.Where(el => el.Flag == true).Select(el.Id).ToList();

请问该行代码的时间复杂度是多少?elements会被遍历两次还是仅一次?


回答

  • 时间复杂度:O(n),其中n是elements集合的元素总数。整个操作只需要对集合做一次完整遍历,每个元素仅执行一次过滤判断,符合条件的元素直接提取Id,最终构建结果列表。
  • 遍历次数:仅遍历一次。LINQ的Where和Select属于延迟执行操作符,它们不会单独触发集合遍历,只有当终端操作(这里的ToList())执行时,才会一次性遍历原集合,同时完成过滤和投影操作——每取出一个元素,先判断是否满足Flag == true,满足就提取Id加入结果,全程只走一遍原集合。

内容的提问来源于stack exchange,提问作者hello-there

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 09:32:01