上一扁使用动态lambda表达式来将DataTable转换成实体,比直接用反射快了不少。主要是首行转换的时候动态生成了委托。
后面的转换都是直接调用委托,省去了多次用反射带来的性能损失。
今天在对SqlServer返回的流对象 SqlDataReader 进行处理,也采用动态生成Lambda表达式的方式转换实体。
先上一版代码
1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.Common; 5 using System.Data.SqlClient; 6 using System.Linq; 7 using System.Linq.Expressions; 8 using System.Reflection; 9 using System.Text;10 using System.Threading.Tasks;11 12 namespace Demo113 {14 public static class EntityConverter15 {16 #region17 /// <summary>18 /// DataTable生成实体19 /// </summary>20 /// <typeparam name="T"></typeparam>21 /// <param name="dataTable"></param>22 /// <returns></returns>23 public static List<T> ToList<T>(this DataTable dataTable) where T : class, new()24 &n