zoukankan      html  css  js  c++  java
  • c#采用emit将DataTable转List

    前面已经说了List转DataTable,也整理了代码。

    现在转回来说说DataTable转List。

    先举一个例子

    public class Person

    {

       public int Age{get;set;}

      punlic string Name{get;set;}

    }

    一般我们要实现转换,最好是直接调用,类似

     public void ConvertDataRow(List<Person> lst,DataTable dt)
            {
                foreach(DataRow row in dt.Rows)
                {
                    Person person = new Person();
                    if(!row.IsNull("Name"))
                    {
                        person.Name = Convert.ToString(row["Name"]);
                    }
                    if (!row.IsNull("Age"))
                    {
                        person.Age = Convert.ToInt32(row["Age"]);
                    }
                    lst.Add(person);
                }
            }

    如果有外面一层方法调用。还可以是类似的代码

     public Person ConvertDataRow(DataRow row)
            {
    
                Person person = new Person();
                if (!row.IsNull("Name"))
                {
                    person.Name = Convert.ToString(row["Name"]);
                }
                if (!row.IsNull("Age"))
                {
                    person.Age = Convert.ToInt32(row["Age"]);
                }
                return person;
            }

    而我的实现就是输出的后面一种,将DataRow转换成实体。

    我就不贴具体的代码了。

    与List转DataTable不一样的地方是。一个model类转DataTable一定是固定的方法。就像什么是唯一一个方法。

    但是反过来,就不是了。一个DataTable可以转成多个model,同样多个DataTable也可以转成同一个model。

    这样就形成了多对多的关系,所以这里在缓存生成的动态方法时,就需要处理唯一标记的问题。我采用了2种方法。

    第一种是DataTable名称,同一个名称对应固定的一个动态方法。

    第二种是用DataTable的列数,所有列名称构造的一个字符串来标记。

    DataReader只有第二种。

  • 相关阅读:
    内存泄漏检测
    qt 关于内存泄漏的检测
    Valgrind 安装与使用
    Qt应用中检测内存泄露——VLD
    Visual C++内存泄露检测—VLD工具使用说明
    ArcGIS Runtime支持的GP工具列表(转 )
    c# 调用ArcEngine的GP工具
    ArcEngine 数据导入经验(转载)
    在ArcEngine中使用Geoprocessing工具-执行工具
    利用C#与AE调用GP工具
  • 原文地址:https://www.cnblogs.com/jinyu20180311/p/10503794.html
Copyright © 2011-2022 走看看