博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
foreach 与 Linq的 Select 效率问题
阅读量:5309 次
发布时间:2019-06-14

本文共 730 字,大约阅读时间需要 2 分钟。

Resharper 是一个非常强大的C#编程辅助工具,有着非常强的提示功能,代码纠正,代码简化等等

在编码过程中注意到这么一件事,可能是大家经常会遇到的:

遍历某个集合,然后经过处理生成另外一个集合,例如遍历一个产品列表,生成一个SelectItem 的List,我一直这么写:

var list = new List
(); foreach (var product in products) { list.Add(new SelectListItem(){ Text = product.Name, Value = product.Id}); }

这时,Resharper会提示我将它改成这样:

var list = products.Select(product => new SelectListItem() {Text = product.Name, Value = product.Id}).ToList();

是简洁了不少,我也开始喜欢这种风格

但在随后的一段代码中,处理上百万的数据,运行比较慢,就开始着手优化代码,发现直接Foreach比Select要快那么一点点,想想也能明白,select内部的实现逻辑,会转换为函数调用,效率肯定会比直接做循环要低。

有时候,简介的代码也许不能带来高的效率,得视情况而定,小数据量,可以Select保持代码简介,对与大量数据,还是直接做简单的循环,简单的数据结构,效率会更好。

转载于:https://www.cnblogs.com/mobwiz/p/3224523.html

你可能感兴趣的文章
Eureka高可用,节点均出现在unavailable-replicas下
查看>>
day 21 - 1 包,异常处理
查看>>
机器学习等知识--- map/reduce, python 读json数据。。。
查看>>
字符串编码
查看>>
预编译语句(Prepared Statements)介绍,以MySQL为例
查看>>
内联汇编实现 memcpy 和 memset
查看>>
css学习笔记
查看>>
关键字--union
查看>>
iOS开发者账号详细介绍
查看>>
Shell入门
查看>>
运算符与格式输出输入4
查看>>
理解事务——原子性、一致性、隔离性和持久性
查看>>
JAVA 大作业——DAY 7
查看>>
深入学习微框架Spring-boot
查看>>
React 同构
查看>>
输入转移
查看>>
.net 获取网站根目录总结
查看>>
bzoj 2039 [2009国家集训队]employ人员雇佣 最小割建图
查看>>
SQL PRIMARY KEY 约束
查看>>
DS28E01典型应用及破解方法
查看>>