关于LIST.Select().ToList()慢的问题
var sendlist = emailList.Select(email => new MailMessage {
                                                    MailServer = SMTPServer,
                                                    UserName = Sender,
                                                    PassWord = EmailPassword,
                                                    ServerCode = ServerCode,
                                                    ToAddr = email.Email,
                                                    BCC = string.Empty,
                                                    CC = string.Empty,
                                                    Title =Tittle,
                                                    Body = Content,
                                                    BodyText = Description,
                                                }).ToList();
代码如上,emailList是一个List<T>,有五万条记录,结果上面的代码运行居然要用到半小时才完成。经多次调试,的确是时间主要在Lambda表达式上。因为SMTPServer是一个全局变量,并非局总变量,每一行都要重新去获取。
只是一个全局变量就这么慢,那么如果是一个函数呢。
代码变成如下:
var mailServer = SMTPServer
var sendlist = emailList.Select(email => new MailMessage {
MailServer = mailServer,
UserName = Sender,
PassWord = EmailPassword,
ServerCode = ServerCode, ToAddr = email.Email,
BCC = string.Empty,
CC = string.Empty, Title =Tittle,
Body = ToContent(Content),
BodyText = Description,
}).ToList();
结过测试,也当出现同样的情况。
为此,在写类似的代码时,不要出现全局变量和函数。
如果非要用到呢?
全局变量的解决方法:把全局变量的值赋给一个局部变量就行了。
如:
var mailServer = SMTPServer
var sendlist = emailList.Select(email => new MailMessage {
MailServer = mailServer,
UserName = Sender,
PassWord = EmailPassword,
ServerCode = ServerCode, ToAddr = email.Email,
BCC = string.Empty,
CC = string.Empty, Title =Tittle,
Body = Content,
BodyText = Description,
}).ToList();
函数的方法,暂时没有想到别的方法,只能在修改业务了。
贴子链接http://bbs.csdn.net/topics/390500602
关于LIST.Select().ToList()慢的问题的更多相关文章
- List的Select 和Select().tolist()
		
List<Person> delp = new List<Person> { ,Name=,Sign= }, ,Name= ,Sign=}, }; delp.Select(u ...
 - ORM数据层框架的设计热点:更新指定的列的几种设计方案
		
ORM框架的定义:对象-关系映射(Object/Relation Mapping,简称ORM) 常见的是:数据库结构=>映射Object(实体属性)=>基于实体类的操作. 还有一种:数据库 ...
 - 从零开始编写自己的C#框架(6)——SubSonic3.0插件介绍(附源码)
		
前面几章主要是概念性的东西为主,向初学者们介绍项目开始前的一些知识与内容,从本章开始将会进入实操阶段,希望跟着本系统学习的朋友认真按说明做好每一步操作(对于代码最好是直接照着文档内容在你的IDE中打一 ...
 - SubSonic3.0使用例子
		
前段时间开发的框架使用了SubSonic2.2以后,觉得开发效率提高了不少,后期维护起来也非常方便,不由的喜欢上了SubSonic.中间有想过升级到更高版本,但度娘一下就放弃了,只有极少的中文版说明, ...
 - EF之结构进一步优化
		
针对之前的使用,做了进一步优化 1.将DAL对象缓存起来 2.仓储类不依赖固定构造的DbContext,执行操作的时候,从线程中动态读取DbContext,这一步也是为了方便将DAL对象缓存起来,解决 ...
 - java 的 linq,不要再写令人讨厌的 for 了!
		
package com.ly.linq; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator ...
 - C# 使用Linq递归查询数据库遇到的问题及解决方法
		
User表通常是我们在写"XX管理系统"项目时必须要用到的,有的情况下人员的分类属于树形结构,就是除了最高层和最低层,中间层都有相对的父和子,设计数据库的时候,我们通常会加一个pa ...
 - 关于async和await的一些误区实例详解
		
转载自 http://www.jb51.net/article/53399.htm 这篇文章主要介绍了关于async和await的一些误区实例详解,有助于更加深入的理解C#程序设计,需要的朋友可以参考 ...
 - DDD「领域驱动设计」分层架构初探
		
前言 基于 DDD 传统分层架构实现. 项目 github地址:https://github.com/WuMortal/DDDSample 这个分层架构是工作中项目正在使用的分层架构,使用了一段时间发 ...
 - RazorPage 小测试,作下记录
		
@page@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf@{}@functions{ public AppInfo item { ...
 
随机推荐
- WordPress数据备份
			
服务器钱用光了要关了或者是服务器想要搬家,需要备份各种数据. 今天简单的备份了一下在服务器上面wordpress各种文件和资源. wordpress的数据主要分两个部分,一个是文字部分的:一个是附件部 ...
 - UML基本架构建模--类概述
			
 Classes 类 Classes are the most important building block of any object-oriented system. A class is ...
 - PreferenceActivity使用示例
			
MainActivity如下: package cn.testpreferenceactivity; import android.content.SharedPreferences; import ...
 - Oracle rank和dense_rank排名函数
			
1.rank函数 rank计算一组值的排名,返回数字类型.排名可能是不连续.如果有5人,其中有2个人排名第一,则rank返回的排名结果为:1 1 3 4 5. 作为一个聚合函数,返回虚拟行在样表中的排 ...
 - Lucene.Net 2.3.1开发介绍 —— 四、搜索(二)
			
原文:Lucene.Net 2.3.1开发介绍 -- 四.搜索(二) 4.3 表达式用户搜索,只会输入一个或几个词,也可能是一句话.输入的语句是如何变成搜索条件的上一篇已经略有提及. 4.3.1 观察 ...
 - c/c++ 直接使用动态库 dlopen
			
c/c++ 直接使用动态库 dlopen 把各个版本编译成动态库,××.so ,提供统一的接口进行调用.这里使用的工具是dlxx系列函数 dlopen void *dlopen(const char ...
 - PPS2013校园招聘笔试题
			
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/11473405 一.简答题 (1)一位老师有2个推理能力很强的学生,他告诉 ...
 - C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
			
本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...
 - Android studio ElasticDownloadView
			
找到个开源项目,地址:https://github.com/Tibolte/ElasticDownload 下载进度效果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...
 - 为Delphi程序增加UAC功能(每个步骤都很详细)
			
相关资料:http://bbs.csdn.net/topics/320071356# 操作方法: 在Source\VCL目录下应该有这样两个文件sample.manifest和WindowsXP.rc ...