代码之家  ›  专栏  ›  技术社区  ›  spcial

提高从DataRow到T的泛型转换性能

  •  0
  • spcial  · 技术社区  · 7 年前

    MSSQL Entity -类似于泛型对象转换 DataRow 到 T 通过调用接受 .

    像这样的厕所:

            List<T> filteredList = new List<T>();
            DataTable dt = ((ITableReader)typeof(T).GetMethod("GetReader").Invoke(null, new object[]{})).GetDataWhere(args);
    
            Type[] types = new Type[] { typeof(DataRow) };
            var constructorInfo = typeof(T).GetConstructor(types);
            var parameters = Expression.Parameter(typeof(DataRow), "dataRow");
    
            Func<DataRow, T> Instance = Expression.Lambda<Func<DataRow, T>>(
                                            Expression.New(constructorInfo, parameters), parameters).Compile();
    
            foreach (DataRow row in dt.Rows)
            {
                filteredList.Add(Instance(row));
            }
    
            return filteredList;
    

    关键是 foreach

    我在想如何改进这个,但我真的找不到解决办法。这似乎需要通过避免这种转换来进行一些常规重构。

    因此,我的问题是,在这种情况下,有什么方法可以提高性能吗?如果没有,如果我想 List 数据库中的对象。只是和 ?

    编辑:另一个信息,我们仅限于.NET 4.0

    0 回复  |  直到 7 年前